如何在2个屏幕上设置课程验证?

时间:2010-10-12 13:58:28

标签: asp.net-mvc

我有一个班级员工,用户在一个屏幕上输入属性的值,然后在另一个屏幕上输入更多值。 我遇到的问题是如何验证这些属性? 如果我为类的属性放置验证属性我有问题。无论字段是否显示在表单上,​​都会进行验证。 所以对于我的Employee类,我必须注释掉一些验证才能让它在1个屏幕上工作。它可能不适用于另一个。         私人密封类元数据         {             [HiddenInput(DisplayValue =假)]             public int EmployeeId {get;组; }

        [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; }
    }

1 个答案:

答案 0 :(得分:2)

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

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