验证模型中的单个对象

时间:2014-10-08 23:33:22

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

我有一个视图模型,其中我有一系列模型,因为我需要在同一页面中显示和获取多个模型。例如

class ViewModel {
     public RegisteratioModel Rm {get; set;}
     public LoginModel LM{get; set;}
}

在每个模型中我都使用数据注释进行验证,例如

public RegistrationModel {
   [Required]
   public String Username {get; set;}
}

当我尝试使用

验证ViewModel中的单个对象时
tryValidate(viewModel.Rm)
if (ModelState.isValid) {}

ModelState始终无效,我认为这是因为其他对象也在进行验证。如何仅验证模型中的单个对象?

1 个答案:

答案 0 :(得分:0)

它不是完全验证单个属性,在幕后它将验证所有属性,但是,它返回由属性名称指定的属性,如果有任何其他属性的问题,它们不会被添加到模型状态。

ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, model.GetType());

string propertyName = "";

ModelValidationResult result = ModelValidator.GetModelValidator(metadata, ControllerContext)
                                             .Validate(null)
                                             .First(m => m.MemberName == propertyName);

此外......这只适用于您的控制器......