Я использую MVC для проверки некоторых текстовых полей HTML на странице, например, в моем контроллере есть
if (String.IsNullOrEmpty(name))
{
ModelState.AddModelError("name", "You must specify a name.");
}
if (ViewData.ModelState.IsValid)
{
return RedirectToAction("Index");
}
return View ();
проблема здесь, если проверка завершается неудачно, она не возвращает возвращаемое представление («Добавить»), потому что контроллеры не обрабатывают представления при возвращаемом представлении (), можно использовать RedirectToView («имя представления»); и это будет хорошо работать, за исключением того, что оно не проходит через валидацию AddModelError («это как будто загрузка страницы в первый раз»).
Я могу обойти это, повторив код для заполнения полей SelectList перед возвращением View ();
как это
ViewData["rooms"] = new SelectList(Villa.intList(10));
ViewData["sleeps"] = new SelectList(Villa.intList(20));
ViewData["accomodationType"] = new SelectList(accomodationList, "accomodationId", "accomodationType");
ViewData["regionName"] = new SelectList(regionList, "regionId", "regionName");
return View();
, который работает нормально, однако, я думаю, что есть лучший способ, чем повторять этот блок кода, кто-нибудь знает какой-нибудь способ вернуть перенаправленное представление и передать ему ошибки модели?
Заранее спасибо, надеюсь, это имело какой-то смысл.