Как работают аннотации к данным?

Я использую аннотации к данным в моем проекте 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 на «привет».

Что мне не хватает?

Заранее спасибо.

24
задан Chev 27 June 2011 в 17:52
поделиться