使模型属性可选

本文关键字:属性 模型 | 更新日期: 2023-09-27 18:19:45

我正在开发asp.net MVC 3应用程序,我已经创建了一个模型。我使用的是实体框架4.1代码优先的方法。我有一个这样的财产:

 [Required]
[Display(Name = "Email Address")]
[DataType(DataType.EmailAddress)]
[RegularExpression(@"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+'.[a-zA-Z]{2,}", ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }

我在两种观点中使用它。我想让它在一个视图中是必需的,但在另一个视图,我想让其成为可选的。

对此有什么建议吗?

使模型属性可选

不要将类直接公开给视图,为每个页面使用一个视图模型,并在那里具有不同的属性。然后映射到控制器中的ef类型。

public class Page1ViewModel
{
    [Required]
    [Display(Name = "Email Address")]
    [DataType(DataType.EmailAddress)]
    [RegularExpression(@"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+'.[a-zA-Z]{2,}", ErrorMessage= "Invalid Email Address")]
    public string Email { get; set; }
    //Other properties
}
public class Page2ViewModel
{
    [Display(Name = "Email Address")]
    [DataType(DataType.EmailAddress)]
    [RegularExpression(@"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+'.[a-zA-Z]{2,}", ErrorMessage    = "Invalid Email Address")]
    public string Email { get; set; }
    //Other properties
}