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);
}
}
... но я не вижу отображения ошибок в сводке проверки, где я предполагаю, что они появятся. У меня есть подозрение, что "Модель" - не правильный ключ, но я не смог найти что-либо в Google.
Ответы
Ответ 1
В конце концов я наткнулся на пример использования, которое я искал, - чтобы назначить ошибку Модели в целом, а не одну из это свойства, как обычно вы называете:
ModelState.AddModelError(string key, string errorMessage);
но используйте пустую строку для ключа:
ModelState.AddModelError(string.Empty, "There is something wrong with Foo.");
Сообщение об ошибке будет представлено в <%: Html.ValidationSummary() %>
, как вы ожидали.
Ответ 2
Вы можете добавить ошибку модели на любое свойство вашей модели, я предлагаю, если нет ничего, связанного с созданием нового свойства.
В качестве примера мы проверяем, действительно ли письмо уже используется в БД и добавляет ошибку в свойство Email в действии, поэтому, когда я возвращаю представление, они знают, что есть ошибка и как ее показать, используя
<%: Html.ValidationSummary(true)%>
<%: Html.ValidationMessageFor(model => model.Email) %>
и
ModelState.AddModelError("Email", Resources.EmailInUse);
Ответ 3
Поместите свойство model dot в строки, работающие для меня: ModelState.AddModelError("Item1.Month", "This is not a valid date");