成功后清除字段

Mur*_*nze 20 asp.net-mvc

我有一个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"/>
}
Run Code Online (Sandbox Code Playgroud)

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

[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);
}
Run Code Online (Sandbox Code Playgroud)

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

Lav*_*Lav 61

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

    ModelState.Clear();
    return View(vm);
}
Run Code Online (Sandbox Code Playgroud)

  • 这是默认行为.在您的视图中,如果MVC帮助程序控件标识出您的模型状态已更改,则会呈现新值.想象一个场景,您可以在其中单击表单上的"提交"按钮.哪个会对控制器产生影响.您将进行一些验证,如果事情失败,那么您将返回相同的视图并出现一些错误.在这种情况下,您希望保持模型值的正确性并显示一些错误消息.如果验证在控制器上传递,那么您将重定向到其他页面. (2认同)