如何重新绑定MVC Core 2 ModelState

时间:2019-03-19 16:02:05

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

有没有一种方法可以在控制器中重新绑定模型状态验证?

我有以下内容:

        if (!model.DifferentShippingAddress)
        {
            model.ShippingAddress = model.BillingAddress.ToShipping();
            // Rebind modelstate
        }

        if (!ModelState.IsValid)
        {
            return View(model);
        }

如果选中了“ SameAsBilling”复选框,我想跳过ShippingAddress条目。

1 个答案:

答案 0 :(得分:1)

用于模型验证的official documentation读取以下内容:

  

模型验证发生在执行控制器动作之前。

因此,您需要清除ModelState并使用下面的代码手动触发验证。

if (!model.DifferentShippingAddress)
{
    model.ShippingAddress = model.BillingAddress.ToShipping();
    ModelState.Clear();
    TryValidateModel(model);
}