2011-11-25 21 views
9

w ASP.NET MVC 3.0 używam Ajax.BeginFormASP.Net MVC 3.0 Ajax.BeginForm przekierowuje do strony?

i uderzania JsonResult na sukces formie jestem Wywołanie funkcji jQuery. ale z jakiegoś powodu moja forma jest przekierowanie do JsonAction

moim zdaniem


@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" /> 
} 

mojego kontrolera


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

jQuery


<script type="text/javascript"> 
function ShowResult(data) { 
    // alert("I am at ShowResult"); 
    if (data.isRedirect) { 
     window.location.href = json.redirectUrl; 
    } 
} 

z jakiegoś powodu po kliknięciu przycisku Wyślij. to uruchamia JsonResult i przekierowuje stronę do host/kontroler/ActionName mam włączone mój

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

w moim layout.cshtml

może ktoś mi powiedzieć co może być nie tak?

Znalazłem problem. Teraz muszę znaleźć rozwiązanie na przedstawienia jestem sprawdzanie mój formularz

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

Jeśli wykluczyć walidacji formularza Ajax działa zgodnie z oczekiwaniami. Ale jeśli mogę zweryfikować mojego formularza ajax następnie formularz nie działa zgodnie z oczekiwaniami Dzięki

+0

Czy wywoływany jest twój oddzwoniony javascript? Czy sprawdziłeś przy pomocy skrzypka, czy Twój obiekt JSon jest poprawnie zwracany do przeglądarki? Co masz na myśli mówiąc dosłownie przy przekierowaniu na JsonAction *? – Jan

+0

Mój skrypt java znajduje się na tej samej stronie. Ponieważ przekierowuje na inną stronę. JavaScript może; być wywołany. i tak mój obiekt Json jest zwracany zgodnie z oczekiwaniami. widzę wynik json na nowej przekierowanej stronie – HaBo

Odpowiedz

18

kiedy to nastąpi jej prawie zawsze, ponieważ pliki skryptowe nie są ładowane

notatka:

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

  1. Ustaw wspomnianą flagę w pliku web.config:
    1. Dołącz do referera NCE do biblioteki jQuery ~/Scripts/jquery-1.4.4.js
    2. zawierać odniesienie do biblioteki, która przechwytuje tę magię w ~/scripts/jquery.unobtrusive-ajax.js

Więc załaduj skrzypka http://fiddler2.com i zobacz, czy skrypty są wywoływane i ładowane.

+0

Widzę problem, który powoduje, że mój skrypt poprawnie wskazuje.Problem z tagiem id, jeśli podam znacznik html id w formularzu, to nie działa. jeśli wziąłem identyfikator, to formularz Ajax działa zgodnie z oczekiwaniami. Ale potrzebuję mojego identyfikatora do formularza Ajax, ponieważ go sprawdzam. – HaBo

Powiązane problemy