首页 > 解决方案 > ViewModel 的条件验证

问题描述

我有一个 ViewModel 用于包含两个单独的 ViewModel 的向导,这些 ViewModel 用于将部分视图加载到向导中。根据在 Step1 中选择的选项,我需要验证 Step2 或 Step3。Step2 和 3 的视图模型有自己的 AbstractValidator,因为它包含客户端验证,所以效果很好。问题是,如果我使用 ModelState.IsValid,其中一个 VM 总是无法验证,因为它是空的(未填写该步骤)。有没有办法跳过对其中一个视图模型的验证?

标签: asp.netvalidationmodel-view-controllerunobtrusive-validation

解决方案


假设您有以下模型:

public class PersonViewModel
{
    [Required]
    public string Email { get; set; }

    [Required]
    public string Password { get; set; }

    [Required]
    public string FullName { get; set; }
}

但是您想从模型验证中排除 FullName,因为您也在未填写 FullName 的地方使用模型,您可以通过以下方式执行此操作:

ModelState.Remove("FullName");

希望能帮到你,我的朋友:))


推荐阅读