正在验证模型中的单个对象

本文关键字:单个 对象 模型 验证 | 更新日期: 2023-09-27 18:25:57

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

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总是无效的,我认为这是因为其他对象也在进行验证。如何仅验证模型中的单个对象?

正在验证模型中的单个对象

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

ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(() => model, model.GetType());
string propertyName = "";
ModelValidationResult result = ModelValidator.GetModelValidator(metadata, ControllerContext)
                                             .Validate(null)
                                             .First(m => m.MemberName == propertyName);

此外。。。这将只在您的控制器内工作。。。