ModelState.AddModelError - как я могу добавить ошибку, которая не для свойства?
Я проверяю свою базу в Create(FooViewModel fvm){...}
чтобы увидеть, если fvm.prop1
и fvm.prop2
уже существуют в этой комбинации; если это так, я хочу добавить ошибку в modelstate, а затем вернуть все представление. Я попробовал:
public ActionResult Create(FooViewModel fvm){
if (ThatComboAlreadyExists(fvm)) {
ModelState.AddModelError("Model", "There is already one like that");
return View(fvm);
}
}
...но я не получаю никакого отображения ошибок в Html.ValidationSummary
, где я предполагаю, что они появятся. У меня есть подозрение, что "модель" не является правильным ключом, но я не смог найти ничего а-ля Google.
3 ответа:
Я в конце концов наткнулся на пример использования я искал-чтобы назначить ошибку модели в целом, а не один из его свойств, как обычно вы называете:
ModelState.AddModelError(string key, string errorMessage);
но используйте пустую строку для ключа:
ModelState.AddModelError(string.Empty, "There is something wrong with Foo.");
сообщение об ошибке появится в
<%: Html.ValidationSummary() %>
как и следовало ожидать.
вы можете добавить ошибку модели на любое свойство вашей модели, я предлагаю, если нет ничего, связанного с созданием нового свойства.
в качестве примера мы проверяем, если электронная почта уже используется в БД и добавить ошибку в свойстве электронной почты в действии, так что когда я возвращаю представление, они знают, что есть ошибка и как показать его с помощью
<%: Html.ValidationSummary(true)%> <%: Html.ValidationMessageFor(model => model.Email) %>
и
ModelState.AddModelError("Email", Resources.EmailInUse);