Привязка модели MVC
-
18-09-2019 - |
Вопрос
Я использую библиотеку проверки MVC из текст ссылки.Я выбрал эту библиотеку, потому что я также использую .NetTiers, который генерирует все атрибуты проверки с использованием блоков проверки MS Enterprise Library.
Это работает нормально, за исключением того, что эта привязка модели автоматически проверяет объект и заполняет сводку проверки.Я считаю это нормальным поведением.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register([Bind()]NetTiersObject obj)
{
return View();
}
Библиотека проверки также имеет метод , который документирован следующим образом:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register([Bind()]NetTiersObject obj)
{
try
{
obj.Validate<NetTiersObject>();
}
catch (EntityValidationException ex)
{
ViewData.ModelState.PopulateWithErrors(ex);
}
return View();
}
Это тоже отлично работает.
Моя проблема в том, что при использовании метода библиотеки проверки он дублирует сообщения об ошибках.При простом использовании привязки модели сообщения об ошибках кажутся странными.Ошибки имеют имя свойства в сообщении.
Итак, я думаю, мне нужно либо отформатировать сообщения об ошибках привязки модели, либо вообще отключить привязку модели.
Есть какие-нибудь рекомендации, помощь?
Спасибо.
Решение 2
Я нашел ответ на вопрос, почему мое ModelState было недействительным.Элементы формы не соответствуют модели, это единственный способ немедленно сделать ModelState недействительным.
Если я найду больше подробностей, я обновлю этот пост.
Другие советы
Вы пытались:
/*At the Point the ModelState should be Valid(TRUE)
because we still didn't enforce any validations */
var v = ModelState.IsValid;
try
{
obj.Validate<NetTiersObject>();
}
catch (EntityValidationException ex)
{
ViewData.ModelState.PopulateWithErrors(ex);
}
И проверьте, верно ли значение v, так и должно быть.Если это правда, то obj.Validate<NetTiersObject>();
делает что-то неправильно, потому что это единственное заполнение дублированных ошибок.
Моя проблема в том, что при использовании метода библиотеки проверки он дублирует сообщения об ошибках.Когда просто используя привязку модели к ошибке сообщения появляются странно.Ошибки имеют имя свойства в сообщении.
Это странно, потому что ModelBinding не должен заполнять ошибки модели, по крайней мере, если вы не используете пользовательскую привязку модели или пытаетесь сохранить в БД без проверки полей.