如何在父模型中省略对模型的验证?

时间:2018-10-17 19:50:24

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

我有一个包含子模型ChildModel1和ChildModel2的父模型ParentModel。

ChildModel1包含必需的数据批注,在视图内部使用ParentModel。它们都以相同的形式调用相同的服务器操作,具体取决于我在父模型中具有的布尔指示符,我希望能够省略ChildModel1或ChildModel2的验证,以便modelState不考虑它们。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

在您的发布操作中,只需分别删除每个子属性。如果您有一个或两个以上的属性,则希望跳过验证,我会将它们移到另一种方法中,以免使Post操作混乱。

[HttpPost]
public ActionResult AnAction(IndexVM model)
{
    ModelState.Remove("Child.ChildProperty1");
    ModelState.Remove("Child.ChildProperty2");

    if (!ModelState.IsValid)
    {
        // put code here
    }

    // carry on 
    return View(model)
}