2011-11-25 5 views
9

In ASP.Net MVC 3.0 Sto usando un Ajax.BeginFormASP.Net MVC 3.0 Ajax.BeginForm sta reindirizzando a una pagina?

e colpire un JsonResult sul successo della forma sto chiamando una funzione jQuery. ma per qualche motivo il mio modulo reindirizza a JsonAction

mio avviso


@using (Ajax.BeginForm("ActionName", "Controller", null, new AjaxOptions 
      { 
       HttpMethod = "POST", 
       OnSuccess = "ShowResult" 
      }, new { id = "myform" })) 
{ 
    // All form Fields 
    <input type="submit" value="Continue" class="button standard" /> 
} 

mio regolatore


public JsonResult ActionName(FormCollection collection) 
{ 
    return Json(new { _status },JsonRequestBehavior.AllowGet); 
} 

jQuery

per qualche motivo, quando si fa clic su Invia. si corre il JsonResult e reindirizza alla pagina di ospitare/regolatore/ActionName ho incluso il mio

<script src="@Url.Content("jquery.unobtrusive-ajax.min.js")"></script> 

nel mio layout.cshtml

uno può dirmi che cosa potrebbe essere sbagliato?

Ho trovato il problema. Ora devo trovare la soluzione sulla presentare sto convalidando la mia forma

$("#myform").validate({ 
    submitHandler: function (form) { 
    // my logic goes here.... 
}}); 

Se escludo la validazione dei form Ajax funziona come previsto. Ma se io convalidare il mio modulo quindi sotto forma ajax non funziona come previsto Grazie

+0

Viene richiamata la chiamata di javascript? Hai controllato con il violinista che il tuo oggetto JSon viene restituito correttamente al browser? Cosa intendi esattamente con * reindirizzamento a JsonAction *? – Jan

+0

il mio script java si trova nella stessa pagina. Perché sta reindirizzando a una pagina diversa. JavaScript non può essere chiamato. e sì il mio oggetto Json viene restituito come previsto. Vedo il risultato JSON nella nuova pagina reindirizzata – HaBo

risposta

18

quando questo accade quasi sempre il suo perché i file di script non vengono caricati

nota:

http://completedevelopment.blogspot.com/2011/02/unobstrusive-javascript-in-mvc-3-helps.html

  1. Impostare il flag indicato nel web.config:
    1. Includere un referente nce alla libreria jQuery ~/Scripts/jquery-1.4.4.js
    2. Includere un riferimento alla libreria che si aggancia questa magia in ~/Scripts/jquery.unobtrusive-ajax.js

Quindi carica il violinista http://fiddler2.com e verifica se gli script vengono richiamati e caricati.

+0

Vedo il problema che tutti i miei script puntano correttamente.Il problema è con il tag id se do un tag id html al modulo, quindi questo non funziona. se prendo l'ID allora il modulo Ajax funziona come previsto. Ma ho bisogno del mio tag ID per il modulo Ajax mentre lo convalida. – HaBo