Я немного использовал asp.net mvc (но я все еще новичок). Я хочу иметь возможность обновить два представления в результате обратной передачи jquery.
В основном у меня есть список и подробный вид. Подробное представление представлено с помощью всплывающего окна jquery (с помощью всплывающего окна jquery-UI). Я хочу обновить список только в том случае, если сохранение данных выполнено успешно (т.е. в окне просмотра сведений нет ошибок проверки). Однако, если в представлении сведений есть какие-либо ошибки проверки, я хочу обновить представление сведений, чтобы пользователь мог видеть ошибки проверки.
поэтому я подумал, что в моем контроллере я возвращаю JsonResult вместо View.
[HttpPost]
public ActionResult SavePersonInfo(Person p) {
if(ModelState.Valid) {
return View("PersonList");
}
return Json({Error = true, View = PartialView("PersonDetails", p)});
}
Как вы видите, если нет ошибок, я возвращаю представление списка людей, но если есть какие-либо ошибки проверки, я возвращаю представление подробностей. Причина, по которой я возвращаю JsonResult, заключается в том, что мне нужно сообщить моему представлению об ошибке, чтобы представление (jquery) знало, какой раздел обновлять (например, нужно ли обновлять список людей 'div' или всплывающее диалоговое окно 'div «).
Итак, на мой взгляд, jquery выглядит следующим образом (пожалуйста, предположим, что есть форма для ввода информации о человеке и функция «SubmitPersonForm ();» вызывается при нажатии на кнопку «Сохранить»):
<script type="text/javascript>
$('#btnSave').click(function (event) {
onBegin();
$.ajax(
{
type: "POST",
url: "/Person/Save",
data: $('form').serialize(),
success: function (result) {
if(result.Error) {
$('#dvDetails').html($(result).View));
}
else {
$('#dvPersonList').html($result);
}
}
});
});
</script>
Итак, проблема, с которой я столкнулся сейчас, заключается в том, что когда возникает ошибка проверки, я вижу правильное обновление div, но я теряю сообщения проверки asv.net mvc. Я не вижу ошибок валидации в красном, как будто ASP.NET MVC полностью их игнорирует. Тем не менее, мой ModelState имеет эти ошибки, просто не отображаются в подробном представлении. У меня есть сводка проверки и операторы Html.ValidationFor (m => ...), помещенные в мое представление сведений.
Может кто-нибудь сказать мне, почему я не вижу ошибок проверки? хотя я использую JSonResult, я использую свойство right, которое является допустимым представлением, когда я отображаю 'dvDetails'. Я делаю что-то, что я не должен делать в asp.net mvc? Кстати, я использую asp.net mvc2 RC с Visual Studio 2010 RC.
Спасибо.