varias - Botón HTML llamando a un controlador MVC y método de acción
pasar datos de una vista a un controlador c# (16)
A pesar del método onclick, también puedes usar formaction de la siguiente manera:
<button type="submit" id="button1" name="button1" formaction=''@Url.Action("Action", "Controller")''>Save</button>
Sé que esto no está bien, pero por el bien de la ilustración, me gustaría hacer algo como esto:
<%= Html.Button("Action", "Controller") %>
Mi objetivo es crear un botón HTML que invoque el método de acción de mi controlador MVC.
Así es como puede enviar su formulario a un controlador y método de acción específico en Razor.
<input type="submit" value="Upload" onclick="location.href=''@Url.Action("ActionName", "ControllerName")''" />
Basándose en algunas de las respuestas anteriores, puede hacer esto:
<button onclick="location.href=''@Url.Action("ActionName", "ControllerName")''" />
Cuando implemente la acción en el controlador, use
return View("Index");
o
return RedirectToAction("Index");
donde la página Index.cshtml (o la página que genera la acción) ya está definida. De lo contrario, es probable que te encuentres con el error "la vista o su maestro no se ha encontrado ...".
Fuente: https://blogs.msdn.microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/
El elemento HTML <button>
solo puede realizar una devolución de datos al formulario que lo contiene.
Por lo tanto, debe crear un formulario que indique POSTS para la acción, luego coloque un <button>
o <input type="submit" />
en el formulario.
En caso de que esté obteniendo un error como "constante de cadena sin terminar", use la siguiente sintaxis de afeitar:
<input type="button" onclick="@("location.href=''"+ Url.Action("Index","Test")+ "''")" />
Entonces, estoy usando Razor, pero esto funcionará con cualquiera de los dos. Básicamente estoy envolviendo un botón en un enlace.
<a href="Controller/ActionMethod">
<input type="button" value="Click Me" />
</a>
La sintaxis Razor está aquí:
<input type="button" value="Create" onclick="location.href=''@Url.Action("Create", "User")''" />
No es necesario utilizar un formulario en absoluto a menos que desee publicar en la acción. Un botón de entrada (no enviar) hará el truco.
<input type="button" value="Go Somewhere Else" onclick="location.href=''<%: Url.Action("Action", "Controller") %>''" />
Prueba esto:
@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)
Esto debería funcionar para ti.
Puede usar Url.Action para especificar generar la url en una acción de controlador, por lo que podría usar cualquiera de los siguientes:
<form method="post" action="<%: Url.Action("About", "Home") %>">
<input type="submit" value="Click me to go to /Home/About" />
</form>
o:
<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>
Si se encuentra en la página de inicio ("/ Inicio / Índice") y desea llamar a la acción de índice del controlador de administración, lo siguiente le funcionaría.
<li><a href="/Admin/Index">Admin</a></li>
es mejor usar este ejemplo
<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
OK, básicamente necesitas pasar la acción al botón y llamarlo cuando ocurra el clic, no necesita estar dentro de a, puedes usar el botón HTML onclick
on para activarlo cuando se haga clic en el botón ...
<button id="my-button" onclick="location.href=''@Url.Action("YourActionName", "YourControllerName")''">Submit</button>
es mejor usar este ejemplo .
Acción de llamada y controlador usando ActionLink
:
@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})
<button type="button" onclick="location.href=''@Url.Action("MyAction", "MyController")''" />
type = "button" evita que la página se envíe. en su lugar, realiza su acción.