ASP.Net MVC 3 - ненавязчивая проверка на стороне клиента с помощью DataAnnotations - поле обязательно, но не должно быть - PullRequest
2 голосов
/ 21 февраля 2011

Я использую ненавязчивую проверку на стороне клиента в MVC 3. У меня есть поле с именем MinPrice, украшенное только атрибутами DisplayName и Range. Но он не проходит проверку на стороне клиента, говоря: «Поле MinPrice обязательно». Я понятия не имею, почему, и я определенно не имею обязательного атрибута, где-либо примененного к нему.

    [DisplayName("Asking Price")]
    [Range(0, 99999999, ErrorMessage="Invalid number")]
    public int MinPrice { get; set; }

Что вызывает это?

(Примечание: я вижу атрибут data-val-required = "Поле Minprice обязателен", отображаемый в источнике html, поэтому что-то связанное с новыми ненавязчивыми процедурами помещает его туда). У меня, похоже, нет этой проблемы с другими полями ..

Ответы [ 2 ]

12 голосов
/ 07 марта 2011

К вашему сведению, это на самом деле не имеет ничего общего с Linq to SQL.

Неявный атрибут [Required] применяется к MinPrice, поскольку он является int, который по определению не может обнуляться (в отличие от int?, который обнуляется).

Это поведение реализовано с помощью

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes

, который по умолчанию имеет значение true.

Вы можете отключить это поведение, установив для него значение false в вашем Global.asax

0 голосов
/ 21 февраля 2011

Хорошо, назовите меня идиотом.

Но я только что обнаружил, что он определенно получает статус «НЕ НУЛЬ» от LINQ to SQL, и это заставляет его становиться обязательным полем, хотя я сам не украшал его чем-то. Так что я виноват, потому что я сделал это обязательным полем в SQL.

Но кажется глупым, что он слушает это, но он автоматически не переносит другие атрибуты проверки, такие как varchar (100), например, на StringLength (100).

В любом случае, решил свою проблему! Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...