我有一个视图模型,其中我有一系列模型,因为我需要在同一页面中显示和获取多个模型。例如
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
始终无效,我认为这是因为其他对象也在进行验证。如何仅验证模型中的单个对象?
答案 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);
此外......这只适用于您的控制器......