У меня есть простая форма ajax в MVC. В AjaxOptions есть OnComplete, установленный на простое javascript-функцию, которое делает одно - возвращает false.Ajax.BeginForm с OnComplete всегда обновляет страницу
@using (Ajax.BeginForm("Action", "Controller", new AjaxOptions { UpdateTargetId = "DivFormId", HttpMethod = "Post", OnComplete = "preventUpdate" }))
function preventUpdate(xhr) {
return false;
}
Проблема в том, что эта страница уже обновлена. Например. в одном случае контроллер возвращает частичный вид после обратной передачи, в другом случае он возвращает некоторый объект Json. Я хочу, чтобы он обновлял страницу при возврате частичного представления и показывал диалоговое окно при возврате json. К сожалению, когда json возвращается, он очищает страницу (обновляет ее с помощью json), даже если функция OnComplete возвращает false, поскольку MSDN говорит: Чтобы отменить обновление страницы, верните false из функции JavaScript.
Как предотвратить обновление страницы в зависимости от полученного ответа?
Спасибо!
----- UPDATE -------
До сих пор я нашел следующее решение. Когда я не укажу UpdateTargetId, я могу сделать вручную с ответом, что хочу. Но это не документированное поведение с возвратом false.
Возможно, это поможет, также посмотреть на первый комментарий http://stackoverflow.com/a/1357151/985284 –
Это не так (но, конечно, я пробовал и эти два метода). Это обработка MS для Ajax.BeginForm с событиями, такими как OnBegin, OnComplete, ... И OnComplete в соответствии с документом MSDN следует прекратить, возвращая false. –