Mam prosty formularz ajax w MVC. W AjaxOptions jest OnComplete ustawiony na prostą funkcję javascript, która robi jedną rzecz - zwraca false.Ajax.BeginForm z OnComplete zawsze aktualizuje stronę
@using (Ajax.BeginForm("Action", "Controller", new AjaxOptions { UpdateTargetId = "DivFormId", HttpMethod = "Post", OnComplete = "preventUpdate" }))
function preventUpdate(xhr) {
return false;
}
Problem polega na tym, że strona jest już zaktualizowana. Na przykład. w jednym przypadku kontroler zwraca częściowy widok po odświeżeniu, w innym przypadku zwraca jakiś obiekt Json. Chcę go zaktualizować stronę po zwróceniu częściowego widoku i pokazać okno dialogowe po zwróceniu json. Niestety po zwróceniu json, usuwa stronę (aktualizuje ją jsonem), nawet gdy funkcja OnComplete zwraca wartość false, ponieważ MSDN mówi: Aby anulować aktualizację strony, zwróć false z funkcji JavaScript.
Jak zapobiec aktualizacji strony w zależności od otrzymanej odpowiedzi?
Dziękujemy!
----- AKTUALIZACJA -------
tej pory znalazłem następujące rozwiązanie. Kiedy nie określam UpdateTargetId, mogę zrobić ręcznie z odpowiedzią, co chcę. Ale nadal nie jest to udokumentowane zachowanie z błędem return.
Może to pomoże, również spojrzeć na pierwszym komentarzu http://stackoverflow.com/a/1357151/985284 –
To nie jest przypadek (ale na pewno spróbowałem również tych dwóch metod). To jest obsługa MS dla Ajax.BeginForm z takimi wydarzeniami jak OnBegin, OnComplete, ... I OnComplete zgodnie z MSDN doc powinien być możliwy do zatrzymania przez zwracanie false. –