C# 将空模型对象从控制器返回到视图以清除字段

C# 将空模型对象从控制器返回到视图以清除字段,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,在我的ASP MVC控制器中,我调用web服务来处理一些信息。如果没有返回错误消息,那么我希望能够显示一条成功消息,同时重置整个字段 我认为最好的方法是在错误消息上使用String.IsNullOrWhiteSpace(),如果消息为空,则使用new语句删除模型对象中的值,如下所示: if (String.IsNullOrWhiteSpace(ViewBag.ErrorMessage)) { agtPay = new AgentInform

在我的ASP MVC控制器中,我调用web服务来处理一些信息。如果没有返回错误消息,那么我希望能够显示一条成功消息,同时重置整个字段

我认为最好的方法是在错误消息上使用
String.IsNullOrWhiteSpace()
,如果消息为空,则使用
new
语句删除模型对象中的值,如下所示:

        if (String.IsNullOrWhiteSpace(ViewBag.ErrorMessage))
        {
            agtPay = new AgentInformation();
        }

        return View(agtPay);
当我在VisualStudio中逐步浏览代码时,视图中的字段看起来都是
null
,正如它们应该的那样,但是当页面加载时,前面的值仍然存在。认为这与缓存有关,我在视图顶部放置了以下标记

<meta http-equiv="PRAGMA" content="NO-CACHE">

这里的问题是初始请求是
POST
,因此
Razor
将从
ModelState
获取这些值。但是,您可以通过在返回之前发出此行来覆盖它:

ModelState.Clear();
完成此操作后,视图将从发送回的模型中提取值

但是,我建议您更恰当地发出一个
RedirectToAction
,因为我觉得您只是想回到
get
状态:

return RedirectToAction("AgentInformation");
而不是:

return View(agtPay);

这里的问题是初始请求是
POST
,因此
Razor
将从
ModelState
获取这些值。但是,您可以通过在返回之前发出此行来覆盖它:

ModelState.Clear();
完成此操作后,视图将从发送回的模型中提取值

但是,我建议您更恰当地发出一个
RedirectToAction
,因为我觉得您只是想回到
get
状态:

return RedirectToAction("AgentInformation");
而不是:

return View(agtPay);