DataAnnotations和ModelState.IsValid不起作用

时间:2014-01-22 22:10:35

标签: c# asp.net-mvc entity-framework

我有两个模型中的注释,两个是相关的,ModelState.IsValid在有注释时返回false,如果没有问题则删除注释,有人知道为什么会这样吗?

模型1:

    namespace SifActivoFijo.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;

    public partial class AF_UbicacionActivoFijo
    {
        public long IdUbicacion { get; set; }
        [Required(ErrorMessage = "1*")]
        [Display(Name = "Codigo Centro de Costo")]
        public string GN_CentroDeCosto_CodigoCentroDeCosto { get; set; }
        [Required(ErrorMessage = "2*")]
        [Display(Name = "Tercero")]
        public string GN_Persona_CodigoPersona { get; set; }
        //[Required(ErrorMessage = "3*")]
        [Display(Name = "Codigo Activo")]
        public string AF_ActivoFijo_CodigoActivoFijo { get; set; }
        [Required(ErrorMessage = "4*")]
        [Display(Name = "Contacto")]
        public string Contacto { get; set; }
        [Required(ErrorMessage = "5*")]
        [Display(Name = "Direccion")]
        [RegularExpression(@"[A-Za-z_0-9\s .#&ñ'-]*\.?[A-Za-z_0-9\s .#&Ñ'-]+", ErrorMessage = "**")]
        public string Direccion { get; set; }
        [Required(ErrorMessage = "6*")]
        [Display(Name = "Telefono")]
        [RegularExpression(@"[A-Za-z_0-9\s .#&ñ'-]*\.?[A-Za-z_0-9\s .#&Ñ'-]+", ErrorMessage = "**")]
        public string Telefono { get; set; }
        [Required(ErrorMessage = "7*")]
        [Display(Name = "Celular")]
        [RegularExpression(@"[0-9 ]*\.?[0-9 ]+", ErrorMessage = "**")]
        public string Celular { get; set; }
        [Required(ErrorMessage = "8*")]
        [Display(Name = "Email")]
        [RegularExpression(@"[A-Za-z_0-9\s .@#&ñ'-]*\.?[A-Za-z_0-9\s .@#&Ñ'-]+", ErrorMessage = "**")]
        public string Email { get; set; }
        [Required(ErrorMessage = "9*")]
        [Display(Name = "Responsable")]
        [RegularExpression(@"[A-Za-z_0-9\s .@#&ñ'-]*\.?[A-Za-z_0-9\s .@#&Ñ'-]+", ErrorMessage = "**")]
        public string Responsable { get; set; }
        [Required(ErrorMessage = "10*")]
        [Display(Name = "Documento")]
        [RegularExpression(@"[A-Za-z_0-9\s .@#&ñ'-]*\.?[A-Za-z_0-9\s .@#&Ñ'-]+", ErrorMessage = "**")]
        public string Responsable_documento { get; set; }
        [Required(ErrorMessage = "11*")]
        [Display(Name = "Telefono")]
        [RegularExpression(@"[A-Za-z_0-9\s .@#&ñ'-]*\.?[A-Za-z_0-9\s .@#&Ñ'-]+", ErrorMessage = "**")]
        public string Responsable_Telefono { get; set; }
        [Required(ErrorMessage = "12*")]
        [Display(Name = "Sucursal")]
        [RegularExpression(@"[A-Za-z_0-9\s .@#&ñ'-]*\.?[A-Za-z_0-9\s .@#&Ñ'-]+", ErrorMessage = "**")]
        public string Sucursal { get; set; }
        [Required(ErrorMessage = "13*")]
        [Display(Name = "N° Contrato")]
        [RegularExpression(@"[A-Za-z_0-9\s .@#&ñ'-]*\.?[A-Za-z_0-9\s .@#&Ñ'-]+", ErrorMessage = "**")]
        public string NoContrato { get; set; }
        [Required(ErrorMessage = "14*")]
        [Display(Name = "Ciudad")]
        public string GN_Nivel3_CodigoNivel3 { get; set; }
        [Required(ErrorMessage = "15*")]
        [Display(Name = "Fecha Inicial")]
        public System.DateTime FechaInicial { get; set; }

        public virtual GN_Nivel3 GN_Nivel3 { get; set; }
        public virtual AF_ActivoFijo AF_ActivoFijo { get; set; }
        public virtual GN_Persona GN_Persona { get; set; }
        public virtual GN_CentroDeCosto GN_CentroDeCosto { get; set; }
    }
}

模型2:

    namespace SifActivoFijo.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;

    public partial class AF_ActivoFijo
    {
        public AF_ActivoFijo()
        {
            this.AF_ConfiguracionActivoFijo = new HashSet<AF_ConfiguracionActivoFijo>();
            this.AF_DepreciacionActivoFijo = new HashSet<AF_DepreciacionActivoFijo>();
            this.AF_UbicacionActivoFijo = new HashSet<AF_UbicacionActivoFijo>();
            this.AF_RevaluacionNIIF = new HashSet<AF_RevaluacionNIIF>();
        }

        [Required(ErrorMessage = "*1")]
        [Display(Name = "Activo Fijo Principal")]
        [RegularExpression(@"[A-Za-z_0-9 .#_-]*\.?[A-Za-z_0-9 .#_-]+", ErrorMessage = "**")]
        public string CodigoActivoFijo { get; set; }
        [Required(ErrorMessage = "*2")]
        [Display(Name = "Grupo Contable")]
        public string AF_GrupoContableAF_CodigoGrupoContableAF { get; set; }
        [Required(ErrorMessage = "*3")]
        [Display(Name = "Estado")]
        public string ST_Estado_CodigoEstado { get; set; }
        [Required(ErrorMessage = "*4")]
        [Display(Name = "Grupo de Activo")]
        public string AF_GrupoActivoFijo_CodigoGrupoAF { get; set; }
        [Required(ErrorMessage = "*5")]
        [Display(Name = "Producto")]
        public string GN_Portafolio_CodigoPortafolio { get; set; }
        [Display(Name = "Serial")]
        [RegularExpression(@"[A-Za-z_0-9 .ñÑ#_-]*\.?[A-Za-z_0-9 .Ññ#_-]+", ErrorMessage = "**")]
        public string Serial { get; set; }
        [Display(Name = "Configurable")]
        public bool SenConfigurable { get; set; }
        [Required(ErrorMessage = "*6")]
        [Display(Name = "Fecha de Activacion")]
        public Nullable<System.DateTime> FechaActivacion { get; set; }
        [Required(ErrorMessage = "*7")]
        [Display(Name = "Costo")]
        [RegularExpression(@"[0-9 ]*\.?[0-9 ]+", ErrorMessage = "**")]
        [DataType(DataType.Currency)]
        public Nullable<double> Costo { get; set; }
        [Required(ErrorMessage = "*8")]
        [Display(Name = "IVA")]
        [RegularExpression(@"[0-9 ]*\.?[0-9 ]+", ErrorMessage = "**")]
        public Nullable<double> ValorIva { get; set; }
        [Required(ErrorMessage = "*9")]
        [Display(Name = "Margen")]
        [RegularExpression(@"[0-9 ]*\.?[0-9 ]+", ErrorMessage = "**")]
        public Nullable<double> PorcentajeMargen { get; set; }
        [Display(Name = "Costo Activo")]
        [RegularExpression(@"[0-9 ]*\.?[0-9 ]+", ErrorMessage = "**")]
        public Nullable<double> CostoActivo { get; set; }
         [Display(Name = "Tiempo Contable")]
        public Nullable<int> TiempoDepreciacionContable { get; set; }
        [Display(Name = "Tiempo Fiscal")]
        public Nullable<int> TiempoDepreciacionFiscal { get; set; }
        [Display(Name = "Depreciable Individiual")]
        public bool SenDepreciacionIndividual { get; set; }
        [Display(Name = "Saldo Contable")]
        public Nullable<double> SaldoADepreciar { get; set; }
        [Required(ErrorMessage = "*10")]
        [RegularExpression(@"[A-Za-z_0-9\s .#&ñ'-]*\.?[A-Za-z_0-9\s .#&Ñ'-]+", ErrorMessage = "**")]
        public string DescripcionActivoFijo { get; set; }
        [Display(Name = "Saldo Fiscal")]
        public Nullable<double> SaldoAdepreciarFiscal { get; set; }
        [Display(Name = "Depreciable")]
        public bool SenDepreciable { get; set; }
        [Required(ErrorMessage = "*11")]
        [Display(Name = "Propietario")]
        public string GN_Persona_CodigoPersona { get; set; }
        public Nullable<double> SaldoNiif { get; set; }
        public Nullable<int> VidaUtilNiif { get; set; }
        public Nullable<System.DateTime> FechaReevaluacion { get; set; }

        public virtual AF_GrupoActivoFijo AF_GrupoActivoFijo { get; set; }
        public virtual AF_GrupoContableAF AF_GrupoContableAF { get; set; }
        public virtual GN_Portafolio GN_Portafolio { get; set; }
        public virtual ST_Estado ST_Estado { get; set; }
        public virtual ICollection<AF_ConfiguracionActivoFijo> AF_ConfiguracionActivoFijo { get; set; }
        public virtual ICollection<AF_DepreciacionActivoFijo> AF_DepreciacionActivoFijo { get; set; }
        public virtual ICollection<AF_UbicacionActivoFijo> AF_UbicacionActivoFijo { get; set; }
        public virtual ICollection<AF_RevaluacionNIIF> AF_RevaluacionNIIF { get; set; }
    }
}

CONTROLLER

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(AF_UbicacionActivoFijo ubicacion)
    {
        AF_UbicacionActivoFijo au = new AF_UbicacionActivoFijo { 

            IdUbicacion=ubicacion.IdUbicacion,
            GN_CentroDeCosto_CodigoCentroDeCosto=ubicacion.GN_CentroDeCosto_CodigoCentroDeCosto,
            GN_Persona_CodigoPersona=ubicacion.GN_Persona_CodigoPersona,
            AF_ActivoFijo_CodigoActivoFijo=ubicacion.AF_ActivoFijo_CodigoActivoFijo,
            Contacto=ubicacion.Contacto,
            Direccion=ubicacion.Direccion,
            Telefono=ubicacion.Telefono,
            Celular=ubicacion.Celular,
            Email=ubicacion.Email,
            Responsable=ubicacion.Responsable,
            Responsable_documento=ubicacion.Responsable_documento,
            Responsable_Telefono=ubicacion.Responsable_Telefono,
            Sucursal=ubicacion.Sucursal,
            NoContrato=ubicacion.NoContrato,
            GN_Nivel3_CodigoNivel3=ubicacion.GN_Nivel3_CodigoNivel3,
            FechaInicial=ubicacion.FechaInicial
        };
        if (ModelState.IsValid)
        {
            db.Entry(au).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("confirm", "Home");
        }

        else
        {
            foreach (var modelStateValue in ViewData.ModelState.Values)
            {
                foreach (var error in modelStateValue.Errors)
                {
                    //Use breakpoints and Let's check what it is in these properties
                    var errorMessage = error.ErrorMessage;
                    var exception = error.Exception;
                }
            }
        }

        ViewBag.GN_Nivel3_CodigoNivel3 = new SelectList(db.GN_Nivel3, "CodigoNivel3", "NombreNivel3", ubicacion.GN_Nivel3_CodigoNivel3);
        ViewBag.GN_CentroDeCosto_CodigoCentroDeCosto = new SelectList(db.GN_CentroDeCosto, "CodigoCentroDeCosto", "NombreCentroDeCosto", ubicacion.GN_CentroDeCosto_CodigoCentroDeCosto);
        return View(ubicacion);
    }

1 个答案:

答案 0 :(得分:1)

数据注释在模型上作为验证工作,当我们建模时.IsValid然后所有注释都根据我们分配给模型属性的值进行验证,似乎任何正则表达式都没有验证您指定的值。