使模型属性可选

时间:2012-01-07 09:39:04

标签: c# asp.net-mvc asp.net-mvc-3

我正在研究asp.net MVC 3应用程序,我已经创建了一个模型。我正在使用Entity Framework 4.1 Code First方法。我有这样的房产:

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

我在两个视图中使用它。我想在一个视图中使它成为必需但在其他视图中我想让它成为可选的。

对此有任何建议吗?

1 个答案:

答案 0 :(得分:1)

不要将类直接暴露给视图,为每个页面使用视图模型,并在那里具有不同的属性。然后映射到控制器中的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
}