Bouton HTML appelant un contrôleur MVC et une méthode D'Action
Je sais que ce n'est pas juste, mais pour des raisons d'illustration, j'aimerais faire quelque chose comme ceci:
<%= Html.Button("Action", "Controller") %>
Mon but est de créer un bouton HTML qui appellera la méthode d'action de mon contrôleur MVC.
16 réponses
Pas besoin d'utiliser un formulaire du tout sauf si vous voulez poster à l'action. Un bouton d'Entrée (pas soumettre) fera l'affaire.
<input type="button" value="Go Somewhere Else" onclick="location.href='<%: Url.Action("Action", "Controller") %>'" />
La syntaxe Razor est ici:
<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />
<button type="button" onclick="location.href='@Url.Action("MyAction", "MyController")'" />
Type = "button" empêche la soumission de la page. au lieu de cela, il effectue votre action.
Vous pouvez utiliser L'Url.Action pour spécifier générer l'url d'une action de contrôleur, de sorte que vous pouvez utiliser l'une des options suivantes:
<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>
Essayez ceci:
@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)
Cela devrait fonctionner pour vous.
En S'appuyant sur deux des réponses ci-dessus, vous pouvez faire ceci:
<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
Voici comment vous pouvez soumettre votre formulaire à un contrôleur et une méthode d'action spécifiques dans Razor.
<input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
L'élément HTML <button>
ne peut que publier sur le formulaire qui le contient.
Par conséquent, vous devez créer un formulaire qui affiche l'action, puis mettre un <button>
ou <input type="submit" />
dans le formulaire.
Dans le cas où vous obtenez une erreur en tant que "constante de chaîne non terminée", utilisez la syntaxe razor suivante:
<input type="button" onclick="@("location.href='"+ Url.Action("Index","Test")+ "'")" />
Lorsque vous implémentez l'action dans le contrôleur, utilisez
return View("Index");
Ou
return RedirectToAction("Index");
Où Index.la page cshtml (ou la page qui génère l'action) est déjà définie. Sinon, vous rencontrez probablement " la vue ou son maître n'a pas été trouvé..." erreur.
Source: https://blogs.msdn.microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/
Donc, j'utilise Razor mais cela fonctionnera en utilisant l'un ou l'autre. J'enroule essentiellement un bouton dans un lien.
<a href="Controller/ActionMethod">
<input type="button" value="Click Me" />
</a>
Malgré la méthode onclick, vous pouvez également utiliser formaction comme suit:
<button type="submit" id="button1" name="button1" formaction='@Url.Action("Action", "Controller")'>Save</button>
Il vaut mieux utiliser cet exemple
<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
Si vous êtes dans la page d'accueil ("/Home / Index") et que vous souhaitez appeler L'action D'Index du contrôleur D'administration, la suite fonctionnerait pour vous.
<li><a href="/Admin/Index">Admin</a></li>
OK, en gros, vous avez besoin de passer l'action du bouton et de l'appeler quand sur se produit, il n'a pas besoin d'être à l'intérieur d'un, vous pouvez utiliser le code HTML onclick
sur bouton déclencher lorsque le bouton obtenir cliqué...
<button id="my-button" onclick="location.href='@Url.Action("YourActionName", "YourControllerName")'">Submit</button>
Il vaut mieux utiliser cet exemple .
Appeler l'action et le contrôleur à l'aide d'un ActionLink
:
@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})