27

我有一个包含 2 个输入类型 = 文本的页面。

@model MVC3.ViewModel.TalkToUsVM

@using (Html.BeginForm())
{
    <ul>
        <li>@Html.TextBoxFor(m => m.TalkToUsRequest.Name)</li>
        <li>@Html.TextBoxFor(m => m.TalkToUsRequest.Email)</li>
    </ul>

    <input type="submit" value="Save"/>
}

在我的控制器中,我这样做:

[HttpPost]
public ActionResult Create(TalkToUsRequest talkToUsRequest)
{
    var vm = new TalkToUsVM();

    if (TryValidateModel(talkToUsRequest))
    {
        vm.Result = "Success";

        return View("Create",vm);
    }

    vm = new TalkToUsVM
    {
        Result = "Errrooooooor",
        TalkToUsRequest = talkToUsRequest
    };

    return View(vm);
}

所以问题..当我的模型有效时,我将结果设置为“成功”,此时 vm.TalkToUsRequest 为空..但是当页面呈现时,所有字段的值与我提交时的值相同..甚至我设置 vm.TalkToUsRequest = null!!如何清除此字段?

4

2 回答 2

75

因此,在这种情况下,如果您返回同一视图,则必须清除模型状态。尝试以下操作:

    ModelState.Clear();
    return View(vm);
}
于 2012-06-01T17:52:28.937 回答
3

您的答案 :

TryUpdateModel(yourmodelname);

它会更新你的视图状态

如果您还想同时清除所有 Modelstate.error ,您还可以使用:

 ModelState.Clear(); 
于 2018-02-25T16:55:22.967 回答