Asp.net mvc 如何跨两个屏幕设置类的验证?

Asp.net mvc 如何跨两个屏幕设置类的验证?,asp.net-mvc,Asp.net Mvc,我有一个名为employee的类,其中用户在一个屏幕上输入属性值,然后在另一个屏幕上输入更多值。 我遇到的问题是如何验证这些属性? 如果我为类的属性设置验证属性,我就有问题了。无论字段是否显示在表单上,都会进行验证。 因此,对于我的Employee类,我不得不注释掉一些验证,以使其在1个屏幕上工作。另一个可能不行。 私有密封类元数据 { [HiddenInput(DisplayValue=false)] public int EmployeeId{get;set;} [Displ

我有一个名为employee的类,其中用户在一个屏幕上输入属性值,然后在另一个屏幕上输入更多值。 我遇到的问题是如何验证这些属性? 如果我为类的属性设置验证属性,我就有问题了。无论字段是否显示在表单上,都会进行验证。 因此,对于我的Employee类,我不得不注释掉一些验证,以使其在1个屏幕上工作。另一个可能不行。 私有密封类元数据 { [HiddenInput(DisplayValue=false)] public int EmployeeId{get;set;}

        [DisplayName("Forename")]
        [DataType(DataType.Text)]
        [Required(ErrorMessage = "Forename is required")]
        public string Forename { get; set; }

        [DisplayName("Surname")]
        [DataType(DataType.Text)]
        [Required(ErrorMessage = "Surname is required")]
        public string Surname { get; set; }

        [DisplayName("Middle Names")]
        [DataType(DataType.Text)]
        public string Middlenames { get; set; }

        //[DisplayName("User Name")]
        //[DataType(DataType.Text)]
        //[Required(ErrorMessage = "User name is required")]
        //public string UserName { get; set; }

        [DisplayName("Employee Number")]
        [DataType(DataType.Text)]
        [Required(ErrorMessage = "EmployeeNumber is required")]
        public string EmployeeNumber { get; set; }

        [DisplayName("Department")]
        [UIHint("DropDownList")]
        [Required(ErrorMessage = "You must select a department from a division")]
        public int DepartmentId { get; set; }

        [DisplayName("User Role")]
        [UIHint("DropDownList")]
        [Required(ErrorMessage = "You must select a role")]
        public int SHP_UserRoleId { get; set; }

        //[DisplayName("Email")]
        //[DataType(DataType.EmailAddress)]
        //[Required(ErrorMessage = "Email is required")]
        //[RegularExpression(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$", ErrorMessage = "Not a valid email")]
        //[UniqueEmail(ErrorMessage = "User already exists")]
        //public string EmailAddress { get; set; }

        [DisplayName("End Date")]
        public DateTime? EndDate { get; set; }
    }

这是人们在视图中使用业务模型时遇到的一个常见问题,原因是业务模型更接近业务,视图更接近应用程序(它只是此业务模型的一种表示)。今天有两个屏幕,明天可能有三个


出于这个原因,我建议您使用反映给定视图的视图模型。因此,在您的情况下,每个视图可以有两个视图模型,并从同一个业务模型中填充它们。验证属性可以放在视图模型上。为了避免在业务模型和视图模型之间转换时出现样板代码,您可以使用。

您指向Automapper的链接看起来非常有趣。我需要了解如何使用它。但计划使用Automapper生成视图模型类,这些类将具有验证属性。