Botão HTML a chamar um controlador MVC e método de Acção
<%= 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.
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") %>'" />
A sintaxe da navalha está aqui:
<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />
<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.
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>
Tenta isto:
@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)
Isto deve funcionar para ti.
Com base em algumas das respostas acima, você poderia fazer isto:
<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
<input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
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.
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")+ "'")" />
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/
<a href="Controller/ActionMethod">
<input type="button" value="Click Me" />
</a>
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>
É melhor usar este exemplo
<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
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>
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>
É melhor usar este exemplo.
Acção de chamada e controlador utilizando um ActionLink
:
@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})