ASP.net MVC提交清除页面缓存

时间:2015-03-29 15:39:34

标签: asp.net asp.net-mvc

以下是控制器代码:

    [HttpPost]
    public ActionResult Index(CallRec objCallRec)
    {
                    // Add the record to the DB
        objCallRec.Add();

        ViewData["Message"] = MvcHtmlString.Create("(Your eference number for this lead is " + objCallRec.CustID + ")." + "<br />" + "<br />" + "Please close this browser.");
        ModelState.Clear();
        return View("ThankYou");
    }

当显示ThankYou并使用F5功能键手动刷新页面时,将再次输入到DB。我收到了这条提示信息:

要再次显示网页,Internet Explorer需要重新发送您之前提交的信息。 如果您要进行购买,则应单击“取消”以避免重复交易。否则,请单击“重试”以再次显示该网页。

有没有办法防止这种情况发生?我使用过ModelState.clear();它并没有阻止这一点。

2 个答案:

答案 0 :(得分:0)

因为你已经回复了一个页面级别。但是,您可以将用户重定向到另一个操作结果,而不是像索引页面那样感谢用户获取潜在客户,他们可以将其带到他们想要的任何地方。否则,您可以创建一个Ajax帖子,以便用户保存并在响应中替换部分视图 如果我选择合适的工作,那么ajax方法将是首选方案。

HTH

答案 1 :(得分:0)

而不是

 return View("ThankYou");

尝试

 return RedirectToAction("ThankYou");

return View(&#34; Thankyou&#34;)告诉MVC生成要为指定视图显示的HTML并将其发送到浏览器。这就像Asp.Net WebForm中的Server.Transfer()一样。

而在RedirecToAction中,浏览器会收到重定向通知并对指定的操作发出新请求。这就像Response.Redirect()