正在验证模型中的单个对象
本文关键字:单个 对象 模型 验证 | 更新日期: 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);
此外。。。这将只在您的控制器内工作。。。