Вопрос

Я использую библиотеку проверки 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 не должен заполнять ошибки модели, по крайней мере, если вы не используете пользовательскую привязку модели или пытаетесь сохранить в БД без проверки полей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top