Usuário com melhor resposta
Data annotation aparece do nada

Pergunta
-
Pessoal,
Estou tendo alguns problemas de validação do modelos em alguns formularios. Alguns annotations que eu nem adicionei estao aparecendo em algumas propriedades. Vou mostrar abaixo:
Uma propriedade da minha classe Cliente:
[Display(Name = "Início da Atividade")] public DateTime DataAtividade { get; set; }
Agora veja View + Razor:
@Html.LabelFor(model => model.Cliente.DataAtividade) @Html.TextBoxFor(model => model.Cliente.DataAtividade)
Agora o Html gerado:
<td> <label class="labelForClass" for="Cliente_DataAtividade" id="lblDataAtividade">Início da Atividade</label> <input class="textBoxForClass" data-val="true" data-val-date="O campo Início da Atividade deve ser uma data." data-val-required="O campo Início da Atividade é obrigatório." id="Cliente_DataAtividade" name="Cliente.DataAtividade" style="width: 100px;" type="text" value="01/01/0001 00:00:00" /> </td>
Ele enfiou ali um required ali do nada. Alguem sabe como posso resolver isso?
Obrigado!
Respostas
-
Isso ocorre pq o seu DateTime jamais pode ser null, para resolver isso você pode usar um Nullable<DateTime>:
[Display(Name = "Início da Atividade")] public Nullable<DateTime> DataAtividade { get; set; }
ou na forma simplificada:
[Display(Name = "Início da Atividade")] public DateTime? DataAtividade { get; set; }
Agora para acessar o valor do seu datetime, você precisa usar a propriedade .Value:
public ActionResult Index(DateTime? parameter){ if(parameter.HasValue){ DateTime date = parameter.Value; } }
Isso fará o DateTime não ser obrigatório.
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Marcado como Resposta Marcelo Moreira Souza segunda-feira, 21 de janeiro de 2013 17:08
- Editado Murilo Kunze segunda-feira, 21 de janeiro de 2013 22:57
Todas as Respostas
-
Isso ocorre pq o seu DateTime jamais pode ser null, para resolver isso você pode usar um Nullable<DateTime>:
[Display(Name = "Início da Atividade")] public Nullable<DateTime> DataAtividade { get; set; }
ou na forma simplificada:
[Display(Name = "Início da Atividade")] public DateTime? DataAtividade { get; set; }
Agora para acessar o valor do seu datetime, você precisa usar a propriedade .Value:
public ActionResult Index(DateTime? parameter){ if(parameter.HasValue){ DateTime date = parameter.Value; } }
Isso fará o DateTime não ser obrigatório.
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Marcado como Resposta Marcelo Moreira Souza segunda-feira, 21 de janeiro de 2013 17:08
- Editado Murilo Kunze segunda-feira, 21 de janeiro de 2013 22:57
-