1

我不确定我是否忽略了一些明显的东西。一旦我做一个 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) 

我确实看到了空值。但是当它显示在视图上时,它不为空。与我第一次输入数据时的视图基本相同。任何的想法?我忽略了什么吗?

还要注意我是如何完成两次 return view(model) 的。有没有其他方法可以做到这一点,我只做一次而不重复?

4

2 回答 2

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);
    }

    ....
}

现在视图将呈现修改后的值。

于 2012-10-19T06:19:56.927 回答
1

如果模型无效,您将返回相同的模型,第二次返回。

第一个根本不需要,return view(model)因为它和第二个之间没有代码,所以无论如何它都会调用。即删除第一个返回,逻辑相同。

于 2012-10-18T18:02:55.037 回答