Question

J'ai une méthode POST déclaré dans mon contrôleur:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateComments(int id, string comments)
{
    // ... 
}

et un ActionLink à mon avis:

<%= Ajax.ActionLink("update", "UpdateComments", 
                        new { id = Model.Id, comments = "test" }, 
                        new AjaxOptions { 
                                HttpMethod="POST", 
                                OnFailure="alert('fail');", 
                                OnSuccess = "alert('success');" 
                            })%>

Je reçois un « introuvable » erreur quand il tente d'acheminer cette demande.

Si je supprime la restriction POST de la méthode UpdateComments dans le contrôleur, il fonctionne très bien.

Qu'est-ce que je manque?

Était-ce utile?

La solution

Il semble qu'il n'a pas aimé la façon dont je déclarais mes callbacks OnFailure et OnSuccess. Je suppose que ce n'a pas pu analyser mon objet AjaxOptions donc ignorait le réglage HttpMethod="POST".

Je l'ai travail en changeant à:

OnFailure="function() { alert('fail'); }",
OnSuccess="function() { alert('success'); }" 

Autres conseils

J'apprends ASP.MVC en ce moment et j'ai eu cette question avec mon Ajax.ActionLink, je suis une méthode GET et non une méthode POST comme il s'était. Alors je me rends compte que je n'ai pas ajouté les scripts référence bibliothèque:

<script src=”/Scripts/MicrosoftAjax.js” type=”text/javascript”></script>
<script src=”/Scripts/MicrosoftMvcAjax.js” type=”text/javascript”></script>

Après l'ajout du script, il a bien fonctionné!

  

FormCollection a un liant par défaut   associé à ce qui a toujours   initialise la collection et vous   devrait jamais nulle. C'est plus   probable que vous avez un vide   collection lors de l'utilisation Ajax.ActionLink   contrairement à l'utilisation d'une forme   bouton de soumission. En effet, le   méthode POST ActionLink ne pas   former des valeurs lorsqu'il exécute le AJAX   demande.    Ce poste est le unswer à vous la question

essayez d'inclure

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top