none
Validação de data com Data Annotation RRS feed

  • Pergunta

  • Ola,

    qual seria a maneira correta de validar uma data usando mvc + ef + data annotation ?
    pois se eu envio uma string ou uma data errada retorna um erro generico
    "The value '20/20/2222' is not valid for"
    onde eu mudo esse erro ?

            [Required(ErrorMessage = "Uma data de nascimento deve ser informada."
    )]
            [RegularExpression("^([0-9]{1,2})/([0-9]{1,2})/([0-9]{4,4})$"
    , ErrorMessage = "Uma data de nascimento válida deve ser informada"
    )]
            [DisplayName("Data de Nascimento"
    )]
            [DataType(DataType.Date,ErrorMessage="Uma data válida deve ser informada"
    )]
            public
     object
     DataNascimento { get
    ; set
    ; }
    

    sábado, 6 de fevereiro de 2010 19:22

Respostas

  • Olá Marcelo,

    Você pode alterar essa mensagem padrão passando um mensagem personalizada para o ValidationMessage, por exemplo:

    <div class="editor-label">
        <%= Html.LabelFor(model => model.Data) %>
    </div>
    <div class="editor-field">
        <%= Html.TextBoxFor(model => model.Data)%>
        <%= Html.ValidationMessageFor(model => model.Data, "Uma data de nascimento válida deve ser informada.")%>
    </div>
    
    Eu testei a sua RegularExpression e não funcionou legal, se você mudar o tipo da sua propriedade de object para DateTime você pode retirar essa RegularExpression da sua propriedade, que tudo ira funcionar perfeitamente.



    Abraços,
    Daniel Fonseca Castro
    www.danielfonsecacastro.com.br
    segunda-feira, 8 de fevereiro de 2010 01:54

Todas as Respostas

  • Olá Marcelo,

    Você pode alterar essa mensagem padrão passando um mensagem personalizada para o ValidationMessage, por exemplo:

    <div class="editor-label">
        <%= Html.LabelFor(model => model.Data) %>
    </div>
    <div class="editor-field">
        <%= Html.TextBoxFor(model => model.Data)%>
        <%= Html.ValidationMessageFor(model => model.Data, "Uma data de nascimento válida deve ser informada.")%>
    </div>
    
    Eu testei a sua RegularExpression e não funcionou legal, se você mudar o tipo da sua propriedade de object para DateTime você pode retirar essa RegularExpression da sua propriedade, que tudo ira funcionar perfeitamente.



    Abraços,
    Daniel Fonseca Castro
    www.danielfonsecacastro.com.br
    segunda-feira, 8 de fevereiro de 2010 01:54
  • o problemaé que desse jeito não funciona no client-side
    quinta-feira, 26 de maio de 2011 12:54
  • estou tentando validar uma data do tipo DateTime no client-side usando data annotations mas não estou conseguindo ja tentei usar o extensions mas só funciona se o atributo for do tipo string pensei em fazer usando remote validation com json mas não tenho nenhuma experiência do tipo com ele gostaria de ajuda
    quarta-feira, 7 de novembro de 2012 14:23