有没有一种方法可以在控制器中重新绑定模型状态验证?
我有以下内容:
if (!model.DifferentShippingAddress)
{
model.ShippingAddress = model.BillingAddress.ToShipping();
// Rebind modelstate
}
if (!ModelState.IsValid)
{
return View(model);
}
如果选中了“ SameAsBilling”复选框,我想跳过ShippingAddress条目。
答案 0 :(得分:1)
用于模型验证的official documentation读取以下内容:
模型验证发生在执行控制器动作之前。
因此,您需要清除ModelState
并使用下面的代码手动触发验证。
if (!model.DifferentShippingAddress)
{
model.ShippingAddress = model.BillingAddress.ToShipping();
ModelState.Clear();
TryValidateModel(model);
}