【发布时间】:2011-04-14 21:20:14
【问题描述】:
我有一个实现 IValidateObject 的类。我在控制器的操作中做了一些额外的工作后,我的业务规则得到了满足。我遇到的问题是 ModelState.IsValid 仍然是错误的。我正在尝试找到如何重置或重新运行以便更新 ModelState。我尝试了 TryUpdateModel,它触发了 Validate 方法,如果我逐步执行我的规则现在是有效的,但 ModelState.IsValid 仍然是错误的(我可以看到它仍然在抱怨相同的规则)。
[HttpPost]
public ActionResult Create(MyModel model)
{
//ModelState.IsValid is False at this point
//model.Do More Stuff To Satisfy IValidateObject rule. At this point all my rules are valid
TryUpdateModel(model); // <-- If run TryUpdateModel and step through, I can see my rule is valid
if (ModelState.IsValid) // this is still False
{
//Save
}
}
更新:
我最后打了电话
ModelState.Clear();
[HttpPost]
public ActionResult Create(MyModel model)
{
//model.Do More Stuff To Satisfy IValidateObject rule. At this point all my rules are valid
ModelState.Clear();
TryUpdateModel(model);
if (ModelState.IsValid)
{
//Save
}
}
【问题讨论】: