101 votes

ASP.NET MVC ActionLink et la méthode post

Quelqu'un peut-il me dire comment puis-je soumettre des valeurs à Controller à l'aide des méthodes ActionLink et POST?
Je ne veux pas utiliser de boutons.
Je suppose qu'il a quelque chose avec jQuery.
Je vous remercie!

71voto

Aidos Points 1440

Si vous utilisez ASP MVC3, vous pouvez utiliser Ajax.ActionLink (), ce qui vous permet de spécifier une méthode HTTP que vous pouvez définir sur "POST".

59voto

AUSteve Points 2482

Vous ne pouvez pas utiliser un ActionLink car cela ne fait que restituer une balise d'ancrage.
Vous pouvez utiliser une publication JQuery AJAX, voir http://docs.jquery.com/Ajax/jQuery.post.
ou appelez simplement la méthode submit du formulaire avec ou sans JQuery (ce qui ne serait pas AJAX), peut-être dans l'événement onclick, quel que soit le contrôle que vous en preniez.

21voto

Idris Points 141

Vous pouvez utiliser jQuery pour effectuer un POST pour tous vos boutons. Donnez-leur simplement le même nom CssClass.

Utilisez "return false"; à la fin de votre événement javascript onclick si vous souhaitez effectuer une redirection RedirectToAction côté serveur après la publication, sinon il vous suffit de renvoyer la vue.

Code de rasoir

 @using (Html.BeginForm())
{
    @Html.HiddenFor(model => model.ID) 
    @Html.ActionLink("Save", "SaveAction", "MainController", null, new { @class = "saveButton", onclick = "return false;" })
}
 

Code JQuery

 $(document).ready(function () {
        $('.saveButton').click(function () {
            $(this).closest('form')[0].submit();
        });
    });
 

C #

 [AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveAction(SaveViewModel model)
{
    // Save code here...

    return RedirectToAction("Index");
    //return View(model);
}
 

19voto

goodies4uall Points 241

@Aidos avait la bonne réponse, je voulais juste que ce soit clair, car elle est cachée dans un commentaire de son post de @CodingWithSpike.

 @Ajax.ActionLink("Delete", "Delete", new { id = item.ApkModelId }, new AjaxOptions { HttpMethod = "POST" })
 

2voto

Navish Rampal Points 122

Utilisez le lien suivant le lien d’action:

 <%= Html.ActionLink("Click Here" , "ActionName","ContorllerName" )%>
 

Pour soumettre les valeurs du formulaire, utilisez:

  <% using (Html.BeginForm("CustomerSearchResults", "Customer"))
   { %>
      <input type="text" id="Name" />
      <input type="submit" class="dASButton" value="Submit" />
   <% } %>
 

Il soumettra les données au contrôleur client et à l'action CustomerSearchResults.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X