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
, где я предполагаю, что они появятся. У меня есть подозрение, что "модель" не является правильным ключом, но я не смог найти ничего a la 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);
размещение свойства model dot в строках работало для меня:ModelState.AddModelError("Item1.Month", "This is not a valid date");