我有一个MVC 5网站-与控制器。如果ModelState。IsValid -然后执行一些操作。
如果它是无效的,我需要告诉用户错误(在ViewBag.Message中)-并将无效的模型传递回视图,以便用户可以看到和编辑它。
所以这在控制器动作的末尾起作用:
return View(MyModelName);
然而,为什么这也工作?:
return View():
为什么不要求我显式地传递无效模型?即使这样也不会将空白模型传递回视图:
return View(new MyModelName());
我必须执行:
ModelState.Clear();
为视图获取一个空白模型。谁能给我解释一下为什么它会这样,这样我就能明白发生了什么。
我在谷歌上找不到这方面的信息。谢谢。
因为它首先检查ModelState字典以查看是否有值。如果是,这些将用于呈现表单输入字段的值。
调用ModelState.Clear()
时,清空模型状态字典。由于模型状态字典是空的,现在它将回退到传递给视图的模型并使用它。这就是为什么你可以在视图中看到视图模型的任何更新的属性值,如果你在动作方法中更新属性值并返回到视图