2009-11-17 5 views
2

Ma question est similaire à this one et j'ai un problème similaire, mais une grande différence est que j'utilise les méthodes d'aide Ajax (Ajax.ActionLink et Ajax.BeginForm) au lieu de gérer l'AJAX avec jQuery .Request.IsAjaxRequest renvoie false sur POST

Request.IsAjaxRequest() renvoie true pour la méthode Edit qui accepte http GET, mais false pour la méthode Edit acceptant http POST.

La requête GET vient d'un lien généré par:

<%=Ajax.ActionLink(item.Name, "Edit", "Device", 
    new { id = item.ID }, 
    new AjaxOptions { HttpMethod= "GET", UpdateTargetId = "ModalDialog" }, 
    new { name = item.Name })%> 

La requête POST provient d'une forme générée par ce code:

<% using (Ajax.BeginForm("Edit", "Device", new { id = Model.ID }, new AjaxOptions { OnComplete = "CloseDialog" })) 
{ %> 
    <fieldset> 
     <h4> 
      <label for="Name">Name</label> 
     </h4> 
     <%= Html.TextBox("Name", null, new { @class = "required" })%> 

     <h4> 
      <input type="checkbox" id="IsActive" name="IsActive" <% if (Model.IsActive)%> <%=Html.Encode("checked=''")%> /> 
      <label for="IsActive">Unit Is Active</label> 
     </h4> 
     <p> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 
<% } %> 

Est-ce par la conception, que je fais quelque chose de mal , et comment puis-je résoudre ce problème?

Répondre

2

Tout semble bien. Une pensée: dans votre AjaxOptions vous spécifiez une fonction "CloseDialog" pour OnComplete. Est-ce que cela a été créé et est-ce accessible au formulaire? Si ce n'est pas le cas, le script MvcAjax va générer une erreur et le formulaire reviendra à une publication régulière.

+0

Bon appel. J'ai eu le "CloseDialog" dans le '(document) .ready (function() {' de la page.) – oltman

+0

Une idée de pourquoi il revient à une publication régulière au lieu de jeter une sorte d'exception ou de laisser le développeur savoir ce qui se passe dans – oltman

+0

Une exception est levée, mais c'est une exception js donc côté client Si vous placez quelques points d'arrêt dans le fichier MvcAjax, vous verrez l'exception renvoyée. la forme comme toute autre forme – Nate

0

Je suis assez surpris d'entendre ça. Vous pouvez installer l'addon Firebug pour Firefox et surveiller le trafic réseau depuis l'onglet NET. Seules les requêtes aSync apparaîtront dans le sous-onglet XHR.

+0

Comme prévu, la requête GET apparaît alors que la demande POST ne le fait pas. Des idées pour lesquelles cela pourrait être? – oltman

+0

Pouvez-vous poster le contenu de votre formulaire? –

+0

Le contenu du formulaire a été posté. Je ne vois rien ici qui puisse causer un problème, mais je suppose que c'est la raison pour laquelle je suis ici en premier lieu :) – oltman

Questions connexes