Como funcionam as anotações de dados?
Uso anotações de dados no meu projeto ASP.NET MVC 3 para validar o modelo. Estes são extremamente convenientes, mas atualmente são mágicos para mim. Eu li que anotações de dados fazemnã lança exceções. Como então o MVC sabe adicionar erros de validação ao dicionário de estado do modelo? Como a falha em definir uma propriedade no modelo devido à validação do modelo aumenta para MVC se nenhuma exceção é lançada? Sempre presumi que exceções eram lançadas toda vez que uma propriedade falhava e que a ligação do modelo MVC capturava a exceção e a adicionava ao dicionário de estado do model
Para testar isso, criei um aplicativo de console e adicionei uma classe de amostra com uma anotação de validação:
public class MyObject
{
[StringLength(10, MinimumLength=3)]
public string Name { get; set; }
}
Instanciei o objeto e tentei atribuir valores à propriedade Name que eram menores que 3. A propriedade atribuiu muito bem, apesar da anotação que diz que o comprimento da string menor que 3 não é permitid
static void Main(string[] args)
{
MyObject mine = new MyObject();
mine.Name = "hi";
Console.WriteLine(mine.Name);
Console.ReadLine();
}
Este pequeno programa escreve "oi" no console. Por quê? Eu esperava que ficasse bravo ao tentar definirmine.Name
para "oi".
O que estou perdendo
Desde já, obrigado