Я хочу вернуть результат JSON. Для этого у меня есть метод контроллера следующим образом, что вызывается из Ajax.BeginForm
на Вид:Возврат JSONResult без переключения просмотров
@using (Ajax.BeginForm("Update", new AjaxOptions { OnSuccess = "MySuccessMethod()" }))
{
<!-- some form stuff -->
<input type="submit" value="Submit"/>
}
Это контроллер, который обрабатывает его:
[HttpPost]
public JsonResult Update(FormCollection fc)
{
// Process form stuff
return Json (new {success = true });
}
То, что я хочу, чтобы обработать успех ответ с MySuccessMethod
. То, что я вижу в том, что взгляд на представить идет к правильному методу контроллера выше, который затем перенаправляет страницу в URL /Home/Update
со следующей строкой на экране:
{ «Успех»: истинный}
Не уверен, что это актуально, но я использую Mono.
Как я могу сделать фреймворк не переключать страницы на /Home/Update
или не отображать строку JSON в представлении и просто обрабатывать JSON в задней части?
Спасибо. Можно ли разместить точку зрения на контроллер с помощью формы ajax? –
Абсолютно. Вам просто нужно убедиться, что объект, который вы передаете контроллеру через форму, соответствует вашей модели просмотра. Пример можно найти здесь (http://stackoverflow.com/questions/9871365/mvc3-passing-viewmodel-to-controller-method-using-jquery-ajax). – trashr0x
Да, спасибо! Поскольку в viewmodel есть два объекта с большим количеством свойств, я решил использовать только первичный ключ и одно значение, которое я обновляю. Затем я просматриваю форму и обновляю базу данных. Это хорошее решение или есть лучший способ? –