web-dev-qa-db-fra.com

Bouton HTML appelant un contrôleur MVC et une méthode d'action

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.

166
Aaron Salazar

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") %>'" />
231
Cheddar

La syntaxe de rasoir est ici:

<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />
207
Babul Mirdha
<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.

58
Amir Chatrbahr

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>
14
Jon Galloway

Essaye ça:

@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)

Cela devrait fonctionner pour vous.

13
Sunny Okoro Awa

En vous appuyant sur certaines des réponses ci-dessus, vous pouvez le faire:

<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
8
usefulBee

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")'" />
7
Debendra Dash

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.

6
SLaks

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")+ "'")" />
5
Gaurav Joshi

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/

4
HappyCoder

il vaut mieux utiliser cet exemple 

<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>

3
Alex Siela

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>
3
jade290

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>
3
Rahul Bhat

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"})
0
Rahul Raut

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>
0
Pabitra Dash

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>
0
Mohamed Wardan

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>
0
Alireza