5

假设我有以下内容ViewModel

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

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

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

ViewModel不是原创的Entity,我在两个地方使用这个模型,在第一个我想验证所有字段,但在另一个我想Email从模型验证中排除字段。是否有指定从验证中排除字段?

4

2 回答 2

12

您可以使用

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; }
}
于 2013-04-28T19:43:46.703 回答
6

一个丑陋的解决方案:

ModelState.Remove("Email");

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

于 2013-04-28T19:44:08.690 回答