sab*_*ber 4 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; }
}
Run Code Online (Sandbox Code Playgroud)
这ViewModel不是原创Entity,我在两个地方使用这个模型,在第一个我要验证所有字段,但在另一个我Email要从模型验证中排除字段.无论如何指定从验证中排除字段?
您可以使用
ModelState.Remove("Email");
Run Code Online (Sandbox Code Playgroud)
删除模型状态中与隐藏字段相关的条目.
最好的解决方案是将视图模型分为两部分:
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; }
}
Run Code Online (Sandbox Code Playgroud)
一个丑陋的解决方案:
ModelState.Remove("Email");
Run Code Online (Sandbox Code Playgroud)
推荐的解决方案:
创建另一个 ViewModel。VM 应该代表您的视图,因此如果您的视图没有电子邮件字段,请为其创建一个合适的 VM。