在ASP MVC上对ViewModel字段进行条件验证

pad*_*ike 3 c# validation asp.net-mvc web

标题:ASP MVC上ViewModel字段的条件验证

我对ASP MVC验证有疑问。假设我拥有以下View模型

public class PersonViewModel
{
    [Required]
    public string Name {get; set; }

    [Required]
    public string Email {get; set; }
}
Run Code Online (Sandbox Code Playgroud)

据此,当我提交表单时,MVC将验证两个字段都具有值。但是,在我的网站中,我遇到这样的情况,可以在全局站点设置中关闭“电子邮件”,因此该模型将仅在表单上呈现“名称文本框”。现在,当我提交表单时,尽管用户无法立即填写该字段,但它仍要求我提供“电子邮件”字段,因为它表示为“必填”。

使用ASP MVC验证时,是否有针对这种情况的解决方案?

pad*_*ike 5

我似乎找到了解决方案:

if(EmailTurnedOff)
{
    this.ViewData.ModelState.Remove("Email");
}
Run Code Online (Sandbox Code Playgroud)

然后,当我调用ModelState.IsValid时,它将给我正确的答案