0

J'écris une page de test MVC4 très simple et Ajax discret ne semble pas fonctionner. Lorsque je clique sur le bouton Soumettre, la page n'est pas soumise.Simple ajax discret MVC4 ne fonctionne pas

J'ai un point d'arrêt est VS et peut dire qu'il n'y a pas de demande.

J'utilise Firefox et quand je clique sur le bouton d'envoi de la console Web affiche cette erreur JavaScript.
--- Chaîne vide est passé à getElementById()

Ce qui se produit à la ligne 16
--- jquery.unobtrusive-ajax.js



I configuration options ajax comme suit:

AjaxOptions ajaxOpts = new AjaxOptions { UpdateTargetId = "officeList", Confirm = "Are you sure?", Url = Url.Action("GetOfficeData") }; 

Voici mon AjaxForm:

@using (Ajax.BeginForm("GetOfficeData", ajaxOpts)) 
{ 
    <div> 
     @Html.DropDownList("orgList", new SelectList(Model.Organizations, "ORGID", "ORGNAME")); 

     <button type="submit" id="btnSubmit">Submit</button> 
    </div> 
} 

Je reçois le « Êtes-vous sûr invite » lorsque je clique sur le bouton Soumettre (tel que défini dans les options ajax).


Si je change Ajax.BeginForm à:

@using (Html.BeginForm()) 
... 

Ensuite, il y a une demande, mes points d'arrêt sont frappés, et comme aucune erreur de JS.


Je l'ai utilisé NuGet pour obtenir la dernière version des deux jQuery et ajax discret. Voici mes balises de script de voir la source (tous - dans l'ordre):

<script src="/Scripts/jquery-2.0.3.js"></script> 
<script src="/Scripts/DataTables-1.9.4/media/js/jquery.dataTables.js"></script> 
<script src="/Scripts/jquery.unobtrusive-ajax.js"></script> 
<script src="/Scripts/jquery.validate.js"></script> 
<script src="/Scripts/jquery.validate.unobtrusive.js"></script> 
<script src="/Scripts/modernizr-2.5.3.js"></script> 




est ici la forme qui obtient rendu:

<form action="/Selectee/GetOfficeData" data-ajax="true" data-ajax-confirm="Are you sure?" data-ajax-mode="replace" data-ajax-update="#officeList" data-ajax-url="/Selectee/GetOfficeData" id="form0" method="post">    
    <div> 
     /*--my drop down ..... 
     <br /> 
     <button type="submit" id="btnSubmit">Submit</button> 
    </div> 
</form> 




Des idées?

+1

Est-ce que votre Action HttpPost? –

+0

Non, ce n'est pas HttpPost. Est-ce important à ce stade? Il semble que le navigateur n'envoie pas la demande. –

+0

Vous avez raison, il n'arrive même pas encore au contrôleur. –

Répondre

0

Je l'ai fonctionné.

Je n'avais pas de Html.BeginForm(), seulement Ajax.BeginForm(). Est-ce valable?

J'ai ajouté un Html.BeginForm() avec un Ajax.BeginForm() et tous mes contrôles à l'intérieur de ce formulaire et il a commencé à fonctionner.

Je pensais Ajax.BeginForm() a pris la place de Html.BeginForm, mais il semble que j'ai besoin des deux. Est-ce exact?

+2

Vous n'avez pas besoin à la fois Ajax.BeginForm et Html.BeginForm – Marthijn