2011-12-13 13 views
13

Im relatevely nuovo con Asp.net MVC3,ASP.NET Ajax.BeginForm invia più richieste

Ho una forma maneggiato con l'Ajax, in questo modo:

@using (Ajax.BeginForm ("dtjson" , nuove AjaxOptions {HttpMethod = "post", UpdateTargetId = "detalle_tarifa", OnSuccess = "exito2", OnBegin = "bloquear"}))

il mio problema è che quando invio dei dati, si invia la richiesta di due volte.

Consente di dare un'occhiata alla vista.

Questa è la forma:

enter image description here

ok, ora la vista dopo la conferma:

enter image description here

E questo è quello di mostrare il debug Firebug:

enter image description here

Sul layout, ho quei file javascript ..

<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.windows-engine.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.jqDock.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.jqDock.min.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.tablePagination.0.4.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.tools.min.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.cookie.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.treeview.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.treeview.edit.js")" type="text/javascript"></script> 
     <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 

E sulla vista (A Vista parziale), ho questo:

<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script> 
<script type="text/javascript" [email protected]("~/Content/tinymce/jscripts/tiny_mce/jquery.tinymce.js")></script> 
<script type="text/javascript" [email protected]("~/Content/tinymce/jscripts/tiny_mce/tiny_mce.js")></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
<script src="@Href("~/Scripts/jquery.uploadify.js")" type="text/javascript"></script> 
<script src="@Href("~/Scripts/jquery.scrollTo.js")" type="text/javascript"></script> 
<script src="@Href("~/Scripts/jquery.blockUI.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
<script src="/Scripts/jquery.cookie.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.treeview.js" type="text/javascript"></script> 
<script src="/Scripts/jquery.treeview.edit.js" type="text/javascript"></script> 

Sembra come se fosse un problema con jquery ... ma non ne sono sicuro ...

Qualsiasi aiuto sarebbe fantastico, grazie a tutti!

+0

Può pubblicare quali file javascript sono inclusi nella visualizzazione/layout? – nemesv

+0

ovviamente l'ho già fatto! Ho trovato questo potrebbe essere un problema con i file jquery .. – mleger45

risposta

61

Hai incluso jquery.unobtrusive-ajax.min.js due volte una volta nel layout una volta nel parziale. Quindi il tuo browser esegue il js all'interno due volte che si iscriverà due volte nell'evento click del form, motivo per cui fa due POST invece di uno.
Quindi è necessario rimuovere il jquery.unobtrusive-ajax.min.js dal parziale.

Nota: se si sta utilizzando un parziale con un layout non è necessario duplicare i j inclusi nel parziale perché è già stato eseguito dal layout. Ci sono alcuni buoni articoli su layouts e partials.

+0

Ok, se non duplica js '.. non funzioneranno sulla pagina .. L'ho già provato. Compreso il non ostruzionistico, dal modo in cui l'ho rimosso e questa volta, invia 3 richieste ... – mleger45

+0

Penso che il problema abbia a che fare con http: //bugs.jquery.com/ticket/4373, a meno che il codice del server funzioni correttamente – mleger45

+0

Grazie Nemesv. Questo mi ha aiutato a risolvere un problema per cui sono rimasto bloccato per quasi 2 giorni !! – jhartzell

2

Nel mio caso ho avuto "Visualizzazione di ritorno" invece di "restituire PartialView".

2

Hai aggiunto jquery.unobtrusive-ajax.js tre volte. Era successo anche a me.

Verificare la configurazione del pacchetto "~/ui/js/jquery.unobtrusive. *". nella tua pagina hai aggiunto di nuovo jquery.unobtrusive-ajax.js, magari nella pagina di layout e l'hai aggiunto.

Problemi correlati