我有一个班级员工,用户在一个屏幕上输入属性的值,然后在另一个屏幕上输入更多值。 我遇到的问题是如何验证这些属性? 如果我为类的属性放置验证属性我有问题。无论字段是否显示在表单上,都会进行验证。 所以对于我的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; }
}
答案 0 :(得分:2)
这是人们在视图中尝试使用业务模型时遇到的常见问题,其原因是业务模型更接近业务,视图更接近应用程序(它只是该业务的一种表示形式)模型)。今天你有两个屏幕,明天可能有三个。
出于这个原因,我建议您使用反映给定视图的视图模型。因此,在您的情况下,您可以为每个视图设置两个视图模型,并从同一个业务模型中填充它们。验证属性可以放在视图模型上。为避免在业务模型和视图模型之间进行转换时出现样板代码,您可以使用AutoMapper。