none
ValidationAttribute Required RRS feed

  • Pergunta

  • Olá,

    gostaria de saber se é possivel sobreescrever um ValidationAttribute.
    Preciso disto, pois tenho campos obrigatórios, e se não informar nada no model, ao tentar fazer algo com aquele model me retorna o erro:

    The X field is required.

    Mas eu tenho um ValidationAttribute com nome "Obrigatorio" que coloca a msg "* Obrigatório", que eu adiciono em outros atritutos do model para validação.

    Mas ao colocar este ValidationAttribute em um campo not null, não aprece a msg "* Obrigatório" mas a mensagem "The X field is required."

    Como fazer aparecer "* Obrigatório" sem usar "ErrorMessage".

    []s!


    Marlon Tiedt
    www.sesmt.com.br

    quarta-feira, 17 de abril de 2013 12:16

Respostas

  • A solução para isto é bem mais simples:

    Meu código era assim:

    public class Obrigatorio : ValidationAttribute
    {
        public Obrigatorio()
        {
            ErrorMessage = "* Obrigatório";            
        }
    
        public override bool IsValid(object value)
        {
            bool valueBool = true;
            if (value is bool)
            {
                valueBool = (bool)value;
            }
            if ((value != null) && (valueBool))
                return true;
            else
                return false;
        }
    }

    E alterei para isto:

    public class Obrigatorio : RequiredAttribute
    {
        public Obrigatorio()
        {
            ErrorMessage = "* Obrigatório";            
        }
    }

    Alterei o meu tipo de ValidationAttribute, assim posso usar em todos meus models, [Obrigatorio].

    Valeu pela ajuda.

    Marlon Tiedt
    www.sesmt.com.br

    • Sugerido como Resposta Paulo M Dalbosco quarta-feira, 17 de abril de 2013 13:58
    • Marcado como Resposta Marlon Tiedt quarta-feira, 17 de abril de 2013 14:12
    quarta-feira, 17 de abril de 2013 13:43

Todas as Respostas

  • Oi Marlon,

    Vou mover sua thread para o Fórum de ASP.Net MVC.

    []s!


    MSc. Fernando Henrique Inocêncio Borba Ferreira
    Microsoft MVP - Visual C#
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 17 de abril de 2013 13:05
  • Da de vc sobrescrever a msg, algo assim.

    @Html.ValidationMessageFor(Function(model) model.NomeFantasia, "Nome Fantasia é obrigatório.")


    Paulo Marcelo Dalbosco

    quarta-feira, 17 de abril de 2013 13:08
  • Cara na sua model vc faz assim.

        public class Model
        {
            [Required(ErrorMessage="O campo nome é obrigatório")]
            public string Nome { get; set; }
        }

    no html vc insere @Html.ValidationMessageFor(m => m.Nome)

    quarta-feira, 17 de abril de 2013 13:13
  • Não queria usar Required(ErrorMessage="X")], pois já tenho um ValidationAttribute para isto como Obrigatorio.

    Paulo, queria algo generico, eu um local só.

    []s

    Marlon Tiedt
    www.sesmt.com.br

    quarta-feira, 17 de abril de 2013 13:32
  • Como assim Marlon?

    O "Html.ValidationMessageFor" é usado na view e vc irá poder dar a msg que quiser. =)


    Paulo Marcelo Dalbosco

    quarta-feira, 17 de abril de 2013 13:36
  • A solução para isto é bem mais simples:

    Meu código era assim:

    public class Obrigatorio : ValidationAttribute
    {
        public Obrigatorio()
        {
            ErrorMessage = "* Obrigatório";            
        }
    
        public override bool IsValid(object value)
        {
            bool valueBool = true;
            if (value is bool)
            {
                valueBool = (bool)value;
            }
            if ((value != null) && (valueBool))
                return true;
            else
                return false;
        }
    }

    E alterei para isto:

    public class Obrigatorio : RequiredAttribute
    {
        public Obrigatorio()
        {
            ErrorMessage = "* Obrigatório";            
        }
    }

    Alterei o meu tipo de ValidationAttribute, assim posso usar em todos meus models, [Obrigatorio].

    Valeu pela ajuda.

    Marlon Tiedt
    www.sesmt.com.br

    • Sugerido como Resposta Paulo M Dalbosco quarta-feira, 17 de abril de 2013 13:58
    • Marcado como Resposta Marlon Tiedt quarta-feira, 17 de abril de 2013 14:12
    quarta-feira, 17 de abril de 2013 13:43
  • Marque a resposta Marlon, para nosso fórum ficar organizado! =)

    Paulo Marcelo Dalbosco

    quarta-feira, 17 de abril de 2013 13:58