我不确定我是否忽视了一些明显的东西。 一旦我做了一个POST,我有以下内容(注意:我要做的是默认相同的视图,使用一些空值,以便用户可以创建另一个条目):
[HttpPost]
public ActionResult QkInsert(ProgInfo model)
{
if (ModelState.IsValid)
{
ProgService.InsertQuickEntry(model);
model.Name = null;
model.Address = null;
model.Phone = null;
return view(model);
}
return view(model);
奇怪的是,当我在IsValid()
中查看模型的值时 return view(model)
我确实看到了空值。 但是当它显示在视图上时,它不是空的。它基本上与我第一次输入数据时的视图相同。任何的想法?我忽略了什么吗?
还要注意我是如何完成两次返回视图(模型)的。有没有其他方法可以做到这一点,我只做一次而不重复?
答案 0 :(得分:2)
这是因为HTML帮助程序在绑定它们的值时首先查看ModelState,并且仅在模型中的值之后。这是设计的。
因此,如果要在POST操作中更改模型的任何值,则需要先将其从ModelState中删除:
[HttpPost]
public ActionResult QkInsert(ProgInfo model)
{
if (ModelState.IsValid)
{
ProgService.InsertQuickEntry(model);
ModelState.Remove("Name");
ModelState.Remove("Address");
ModelState.Remove("Phone");
model.Name = null;
model.Address = null;
model.Phone = null;
return view(model);
}
....
}
现在视图将呈现修改后的值。
答案 1 :(得分:1)
如果模型无效,您将返回相同的模型,第二次返回。
第一个return view(model)
完全没有必要,因为它和第二个之间没有代码,所以无论如何它都会调用。也就是说,删除第一个返回,逻辑是相同的。