从模型验证中排除字段

时间:2013-04-28 19:40:58

标签: c# asp.net-mvc model-validation

假设我有以下ViewModel

    public class PersonViewModel
    {
        [Required]
        public String Email { get; set; }

        [Required]
        public String FirstName { get; set; }

        [Required]
        public String LastName { get; set; }
    }

这是ViewModel而非原始Entity,我在两个地方使用此模型,第一个我要验证所有字段,但在另一个我要排除{{1来自模型验证的字段。无论如何都要指定从验证中排除字段吗?

2 个答案:

答案 0 :(得分:8)

您可以使用

ModelState.Remove("Email");

删除模型状态中与隐藏字段相关的条目。

最佳解决方案是将视图模型分为两部分:

public class PersonViewModel
{
    [Required]
    public String FirstName { get; set; }

    [Required]
    public String LastName { get; set; }
}

public class PersonWithEmailViewModel : PersonViewModel
{
    [Required]
    public String Email { get; set; }
}

答案 1 :(得分:2)

丑陋的解决方案:

ModelState.Remove("Email");

推荐解决方案:
创建另一个ViewModel。 VM应该代表您的视图,因此如果您的视图没有“电子邮件”字段,请为其创建合适的VM。