ASP.Net MVC3 — Правильно обрабатывает отправку формы Ajax на стороне сервера

#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)