none
Validação via Partial Class RRS feed

  • Pergunta

  • Boa Noite,

    Fiz uma tabela no ADO.NET Entity 

    Código dela:

    [EdmEntityTypeAttribute(NamespaceName="MercadoVerde", Name="Pais")]
        [Serializable()]
        [DataContractAttribute(IsReference=true)]
        public partial class Pais : EntityObject
        {
            #region Factory Method
        
            /// <summary>
            /// Create a new Pais object.
            /// </summary>
            /// <param name="iD_Pais">Initial value of the ID_Pais property.</param>
            /// <param name="sigla_Pais">Initial value of the Sigla_Pais property.</param>
            /// <param name="nome">Initial value of the Nome property.</param>
            public static Pais CreatePais(global::System.Int32 iD_Pais, global::System.String sigla_Pais, global::System.String nome)
            {
                Pais pais = new Pais();
                pais.ID_Pais = iD_Pais;
                pais.Sigla_Pais = sigla_Pais;
                pais.Nome = nome;
                return pais;
            }
    
            #endregion
    
            #region Primitive Properties
        
            /// <summary>
            /// No Metadata Documentation available.
            /// </summary>
            [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
            [DataMemberAttribute()]
            public global::System.Int32 ID_Pais
            {
                get
                {
                    return _ID_Pais;
                }
                set
                {
                    if (_ID_Pais != value)
                    {
                        OnID_PaisChanging(value);
                        ReportPropertyChanging("ID_Pais");
                        _ID_Pais = StructuralObject.SetValidValue(value);
                        ReportPropertyChanged("ID_Pais");
                        OnID_PaisChanged();
                    }
                }
            }
            private global::System.Int32 _ID_Pais;
            partial void OnID_PaisChanging(global::System.Int32 value);
            partial void OnID_PaisChanged();
        
            /// <summary>
            /// No Metadata Documentation available.
            /// </summary>
            [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
            [DataMemberAttribute()]
            public global::System.String Sigla_Pais
            {
                get
                {
                    return _Sigla_Pais;
                }
                set
                {
                    OnSigla_PaisChanging(value);
                    ReportPropertyChanging("Sigla_Pais");
                    _Sigla_Pais = StructuralObject.SetValidValue(value, false);
                    ReportPropertyChanged("Sigla_Pais");
                    OnSigla_PaisChanged();
                }
            }
            private global::System.String _Sigla_Pais;
            partial void OnSigla_PaisChanging(global::System.String value);
            partial void OnSigla_PaisChanged();
        
            /// <summary>
            /// No Metadata Documentation available.
            /// </summary>
            [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
            [DataMemberAttribute()]
            public global::System.String Nome
            {
                get
                {
                    return _Nome;
                }
                set
                {
                    OnNomeChanging(value);
                    ReportPropertyChanging("Nome");
                    _Nome = StructuralObject.SetValidValue(value, false);
                    ReportPropertyChanged("Nome");
                    OnNomeChanged();
                }
            }
            private global::System.String _Nome;
            partial void OnNomeChanging(global::System.String value);
            partial void OnNomeChanged();
    

    Gostaria de aplicar as validações nela usando uma partial class. O código esta assim:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    using System.Web.Mvc;
    
    namespace SLIMV.Models
    {
        [MetadataType(typeof(PaisMetadata))]
        public partial class Pais{ }
    
        [Bind(Exclude = "ID_Pais")]
        public class PaisMetadata
        {
            [Required(ErrorMessage = "Campo obrigatório")]
            [StringLength(5, ErrorMessage = "Este campo pode conter apenas 5 caracteres")]
            public string Sigla_Pais { get; set; }
    
            [Required(ErrorMessage = "Campo obrigatório")]
            [StringLength(50, ErrorMessage = "Este campo pode conter apenas 50 caracteres")]
            public string Nome { get; set; }
        }
    }

    Porém não esta dando certo. O aviso que deveria aparecer na validação ("Campo obrigatório") nunca aparece. Poderiam me ajudar por favor ?

    Obrigado =)

    quarta-feira, 23 de janeiro de 2013 22:56

Respostas

  • Obrigado pela atenção gente. Foi um erro de novato xD

    Estava utilizando as classes da tabela (@model SLIMV.Pais (o que é errado de se fazer)) e não as models (@model SLIMV.Models.PaisMetadata). Utilizando as models deu certinho.

    Obrigado

    • Marcado como Resposta _Omnislash_ quinta-feira, 24 de janeiro de 2013 12:02
    quinta-feira, 24 de janeiro de 2013 12:01

Todas as Respostas

  • Os attributes no html estão sendo criados?

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quinta-feira, 24 de janeiro de 2013 00:08
  • Você está usando uma view criada automáticamente ou criou o seu na unha?

    Twitter: @MayogaX
    Blog: Dev Blog

    quinta-feira, 24 de janeiro de 2013 10:36
  • Murilo, os attributes estam sendo criados, só a validação mesmo que está avacalhada D:

    Priscila, estou usando view criada automaticamente.

    Obrigado

    quinta-feira, 24 de janeiro de 2013 10:51
  • Você está usando os scripts corretos?

    jquery, jquery.validate, jquery.validate.unobtrusive?


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quinta-feira, 24 de janeiro de 2013 10:55
  • Sim, estou usando os seguintes scripts

    <script src="../../Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
           

    quinta-feira, 24 de janeiro de 2013 10:59
  • você chegou a alterar algo nas views?

    Twitter: @MayogaX
    Blog: Dev Blog

    quinta-feira, 24 de janeiro de 2013 11:44
  • Não, eu deixei do jeito que foram criadas
    quinta-feira, 24 de janeiro de 2013 11:55
  • Obrigado pela atenção gente. Foi um erro de novato xD

    Estava utilizando as classes da tabela (@model SLIMV.Pais (o que é errado de se fazer)) e não as models (@model SLIMV.Models.PaisMetadata). Utilizando as models deu certinho.

    Obrigado

    • Marcado como Resposta _Omnislash_ quinta-feira, 24 de janeiro de 2013 12:02
    quinta-feira, 24 de janeiro de 2013 12:01