#jquery #asp.net-mvc #ajax
#jquery #asp.net-mvc #ajax
Вопрос:
У меня есть форма, которую я хотел бы наделить замечательными качествами Ajax-представления
@using(Html.BeginForm()) {
...
}
Я изменил Html.BeginForm()
на Ajax.BeginForm()
, но не совсем понимаю, что делать на стороне сервера.
Раньше я делал что-то вроде этого:
[HttpPost]
public ActionResult EditMyStuff(MyViewModel vm) {
if(!ModelState.IsValid)
return View(vm);
// save stuff
return RedirectToAction("Index");
}
И это то, что я хочу сохранить, если у клиента отключен javascript, но если форма отправляется через Ajax, очевидно, это не то, что я хочу — я хочу, чтобы любые ошибки появлялись в сводке проверки при ошибке или в сообщении «Ваши изменения были сохранены» при успешном выполнении.
Каков стандартный способ сделать это?
Ответ №1:
Вы должны добавить предложение If для запроса Ajax
if (Request.IsAjaxRequest())
{
// Return PartialView or Json
}
else
{
// Normal response
}
Комментарии:
1. Потрясающе, есть ли встроенный способ вернуть мои ошибки ModelState тогда?
2. Что я обычно делаю, так это добавляю сообщение об ошибке в словарь ViewData (ViewBag, если вы используете ASP.NET MVC3)