为什么返回视图()-和返回视图(MyModelName)都传递[无效]模型回视图(MVC 5)



我有一个MVC 5网站-与控制器。如果ModelState。IsValid -然后执行一些操作。

如果它是无效的,我需要告诉用户错误(在ViewBag.Message中)-并将无效的模型传递回视图,以便用户可以看到和编辑它。

所以这在控制器动作的末尾起作用:

return View(MyModelName);

然而,为什么这也工作?:

return View():

为什么不要求我显式地传递无效模型?即使这样也不会将空白模型传递回视图:

return View(new MyModelName());

我必须执行:

ModelState.Clear();

为视图获取一个空白模型。谁能给我解释一下为什么它会这样,这样我就能明白发生了什么。

我在谷歌上找不到这方面的信息。谢谢。

因为它首先检查ModelState字典以查看是否有值。如果是,这些将用于呈现表单输入字段的值。

调用ModelState.Clear()时,清空模型状态字典。由于模型状态字典是空的,现在它将回退到传递给视图的模型并使用它。这就是为什么你可以在视图中看到视图模型的任何更新的属性值,如果你在动作方法中更新属性值并返回到视图

最新更新