Botão HTML a chamar um controlador MVC e método de Acção

Eu sei que isto não está certo, mas por uma questão de ilustração, gostaria de fazer algo assim:
<%= Html.Button("Action", "Controller") %>
O meu objectivo é fazer um botão HTML que chame o método de Acção do meu controlador de MVC.

Author: TylerH, 2010-03-24

16 answers

Não há necessidade de usar um formulário a não ser que você queira postar para a ação. Um botão de entrada (não enviar) vai fazer o truque.

<input type="button" value="Go Somewhere Else" onclick="location.href='<%: Url.Action("Action", "Controller") %>'" />
 216
Author: Cheddar, 2010-03-24 19:08:36

A sintaxe da navalha está aqui:

<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />
 195
Author: Babul Mirdha, 2013-04-06 05:38:55
<button type="button" onclick="location.href='@Url.Action("MyAction", "MyController")'" />

Type= "button" impede a page de submeter. em vez disso, executa a tua acção.

 51
Author: Amir Chatrbahr, 2017-12-07 23:31:12

Pode usar o Url.Acção para indicar gerar o url para uma acção do controlador, para que possa usar qualquer um dos seguintes:

<form method="post" action="<%: Url.Action("About", "Home") %>">
   <input type="submit" value="Click me to go to /Home/About" />
</form>

Ou:

<form action="#">
  <input type="submit" onclick="parent.location='<%: Url.Action("About", "Home") %>';return false;" value="Click me to go to /Home/About" />
  <input type="submit" onclick="parent.location='<%: Url.Action("Register", "Account") %>';return false;" value="Click me to go to /Account/Register" />
</form>
 14
Author: Jon Galloway, 2010-03-24 04:22:20

Tenta isto:

@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)
Isto deve funcionar para ti.
 12
Author: Sunny Okoro Awa, 2016-01-18 17:32:05

Com base em algumas das respostas acima, você poderia fazer isto:

<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
 7
Author: usefulBee, 2014-04-08 18:11:33
É assim que pode submeter a sua forma a um controlador específico e método de acção em Razor.
 <input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
 7
Author: Debendra Dash, 2016-02-16 19:13:51

O elemento HTML <button> só pode postar no formulário que o contém.

Portanto, você precisa fazer um formulário que poste para a ação, em seguida, colocar um {[[0]} ou <input type="submit" /> na forma.

 6
Author: SLaks, 2010-03-23 22:01:15

No caso de estar a obter um erro como "constante de string não determinada", use a seguinte sintaxe:

<input type="button" onclick="@("location.href='"+ Url.Action("Index","Test")+ "'")" />
 5
Author: Gaurav Joshi, 2015-05-26 05:48:05

Quando implementar a acção no controlador, use

return View("Index");

Ou

return RedirectToAction("Index");

Em Que Índice.a página cshtml (ou a página que gera a ação) já está definida. Caso contrário, você provavelmente está encontrando "a vista ou seu mestre não foi encontrado..." erro.

Fonte: https://blogs.msdn.microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/

 4
Author: HappyCoder, 2017-01-12 05:33:12
Então, estou a usar o Razor, mas isto vai funcionar com ambos. Estou basicamente a embrulhar um botão num link.
<a href="Controller/ActionMethod">
    <input type="button" value="Click Me" />
</a>
 3
Author: jade290, 2015-08-13 15:25:39

Apesar do método onclick, também pode utilizar a formacção do seguinte modo:

<button type="submit" id="button1" name="button1" formaction='@Url.Action("Action", "Controller")'>Save</button>
 3
Author: Rahul Bhat, 2017-08-19 06:27:27

É melhor usar este exemplo

<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
 2
Author: Alex Siela, 2017-11-13 00:41:50

Se você está na página inicial ("/Home/Index") e você gostaria de chamar a ação de Index do controlador de Administração, seguir iria funcionar para você.

<li><a href="/Admin/Index">Admin</a></li>
 0
Author: Pabitra Dash, 2014-05-14 14:17:30

OK, basicamente, você precisa passar a ação para o botão e chamá-lo quando o clique acontece, ele não precisa estar dentro de um, você pode usar o HTML onclick em botão para provocá-lo quando o botão obter clicado...

<button id="my-button" onclick="location.href='@Url.Action("YourActionName", "YourControllerName")'">Submit</button>
 0
Author: Alireza, 2017-10-21 13:13:47

É melhor usar este exemplo.

Acção de chamada e controlador utilizando um ActionLink:

@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})
 0
Author: Rahul Raut, 2018-04-03 14:57:28