Я использую аннотации к данным в моем проекте ASP.NET MVC 3 для проверки модели. Это очень удобно, но в настоящее время для меня они волшебны. Я читал, что аннотации данных , а не вызывают исключения. Как тогда MVC знает, что нужно добавлять ошибки проверки в словарь состояния модели? Каким образом не удается установить свойство в модели из-за пузыря проверки модели до MVC, если не генерируется исключение? Я всегда предполагал, что исключения генерируются каждый раз, когда свойство выходит из строя, и что привязка модели MVC перехватывает исключение и добавляет его в словарь состояния модели.
Чтобы проверить это, я создал консольное приложение и добавил образец класса с проверочной аннотацией к it:
public class MyObject
{
[StringLength(10, MinimumLength=3)]
public string Name { get; set; }
}
Затем я создал экземпляр объекта и попытался присвоить свойству Name значения, которые были меньше 3. Свойство назначено отлично, несмотря на аннотацию, в которой говорится, что длина строки меньше 3 недопустима.
static void Main(string[] args)
{
MyObject mine = new MyObject();
mine.Name = "hi";
Console.WriteLine(mine.Name);
Console.ReadLine();
}
Это маленькая программа пишет "привет" на консоль. Зачем? Я ожидал, что он разозлится при попытке установить mine.Name
на «привет».
Что мне не хватает?
Заранее спасибо.