我有一个viewmodel,它由三个模型组成,它们都作为一个单独的表单显示在屏幕上。
public class ViewModel
{
public PersonVM person { get; set; }
public DepartmentVM department { get; set; }
public EmploymentVM employment { get; set; }
}
当用户填写表单时,他们可以填写一个模型详细信息(例如: - Person),并将其他模型详细信息留空。
如何在我的动作方法中为所有三个模型实现模型验证。我想仅在为每个模型填充模型(非空)时才进行模型验证。
如何根据个人模型是否已填充来实施模型验证?
答案 0 :(得分:1)
您可以在模型上实施IValidatableObject
public class ViewModel : IValidatableObject
{
public PersonVM person { get; set; }
public DepartmentVM department { get; set; }
public EmploymentVM employment { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
// Add custom logic to validate each object
}
}
如果您向每个表单虚拟机添加IValidatableObject
,那么您可以从ViewModel
类
答案 1 :(得分:0)
您需要的是自定义模型验证。您可以通过继承ActionFilterAttribute, IActionFilter
。
http://www.asp.net/mvc/overview/older-versions/hands-on-labs/aspnet-mvc-4-custom-action-filters