Добавить ошибку состояния модели и проверить после перенаправления на действие - PullRequest
1 голос
/ 30 декабря 2011

У меня есть вопрос о ModelState и сообщениях об ошибках валидации в MVC3. В моем реестре отображается @Html.ValidationSummary(false), в котором отображаются сообщения об ошибках DataAnnotations из моего объекта Model. Затем ... в моем контроллере действия Register у меня есть ModelState.IsValid, но внутри этого if(ModelState.IsValid) у меня есть другие средства управления ошибками, которые добавляют к состоянию модели значение ModelState.AddModelError(string.Empty, "error..."), а затем я делаю RedirectToAction, но сообщения добавляются в ModelState вообще не отображается.

Почему это происходит?

1 Ответ

5 голосов
/ 30 декабря 2011

и затем я выполняю RedirectToAction

Это ваша проблема.При перенаправлении значения состояния модели теряются.Значения, добавленные в состояние модели (включая сообщения об ошибках), сохраняются только в течение срока действия текущего запроса.Если вы перенаправите это новый запрос, следовательно, состояние модели будет потеряно.Обычный поток действия POST следующий:

[HttpPost]
public ActionResult Foo(MyViewModel model)
{
    if (!ModelState.IsValid)
    {
        // there were some validation errors => we redisplay the view
        // in order to show the errors to the user so that he can fix them
        return View(model);
    }

    // at this stage the model is valid => we can process it 
    // and redirect to a success action
    return RedirectToAction("Success");
}
...