Я использую аннотации данных в моем проекте ASP.NET MVC 3 для проверки модели. Это очень удобно, но в настоящее время они для меня волшебны. Я читал, что аннотации данных не генерируют исключений. Как известно MVC добавить ошибки проверки в словарь состояния модели? Как не удается установить свойство на модели из-за того, что валидация модели пузырится до MVC, если исключение не выбрасывается? Я всегда предполагал, что исключения были выброшены каждый раз, когда свойство не удалось, и что привязка модели MVC поймала исключение и добавила его в словарь состояния модели.
Чтобы проверить это, я создал консольное приложение и добавил класс образца с аннотацией проверки:
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
на "привет".
Что мне не хватает?
Спасибо заранее.