Je sais que ce n'est pas correct, mais pour illustrer mon propos, j'aimerais faire quelque chose comme ceci:
<%= Html.Button("Action", "Controller") %>
Mon objectif est de créer un bouton HTML qui appellera la méthode d'action de mon contrôleur MVC.
Pas besoin d'utiliser un formulaire du tout, sauf si vous souhaitez poster à l'action. Un bouton de saisie (ne pas soumettre) fera l'affaire.
<input type="button"
value="Go Somewhere Else"
onclick="location.href='<%: Url.Action("Action", "Controller") %>'" />
La syntaxe de rasoir 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 page de se soumettre. au lieu de cela, il exécute votre action.
Vous pouvez utiliser Url.Action pour spécifier la génération de l'URL d'une action de contrôleur. Vous pouvez donc utiliser l'un des éléments suivants:
<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>
Essaye ça:
@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)
Cela devrait fonctionner pour vous.
En vous appuyant sur certaines des réponses ci-dessus, vous pouvez le faire:
<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
Voici comment 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 publier que sur le formulaire qui le contient.
Par conséquent, vous devez créer un formulaire que POST pour l'action, puis mettre un <button>
ou <input type="submit" />
dans le formulaire.
Si vous obtenez une erreur en tant que "constante de chaîne non terminée", utilisez la syntaxe de rasoir 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.cshtml (ou la page qui génère l'action) est déjà défini. Sinon, vous rencontrerez probablement l'erreur "La vue ou son maître n'a pas été trouvé ...".
Source: https://blogs.msdn.Microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/
il vaut mieux utiliser cet exemple
<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
Donc, j'utilise Razor mais cela fonctionnera avec l'un ou l'autre. Je suis en train d'envelopper 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 .
Action d’appel et contrôleur utilisant une ActionLink
:
@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})
Si vous êtes dans la page d'accueil ("/ Home/Index") et que vous souhaitez appeler l'action d'index du contrôleur de gestion, la procédure suivante vous convient.
<li><a href="/Admin/Index">Admin</a></li>
Utilisez cet exemple:
<button name="nameButton" id="idButton" title="your title" class="btn btn-secondary" onclick="location.href='@Url.Action( "Index","Controller" new { id = Item.id })';return false;">valueButton</button>
OK, vous devez fondamentalement passer l'action au bouton et l'appeler quand un clic survient, il n'est pas nécessaire qu'il soit dans un de, vous pouvez utiliser HTML onclick
sur buttonbouton être cliqué ...
<button id="my-button" onclick="location.href='@Url.Action("YourActionName", "YourControllerName")'">Submit</button>