【问题标题】:ASP.net MVC Submit clear page cacheASP.net MVC 提交清除页面缓存
【发布时间】:2015-03-29 15:39:34
【问题描述】:

以下是控制器代码:

    [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 功能键手动刷新页面时,潜在客户会再次输入数据库。我收到这条提示信息:

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

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

【问题讨论】:

  • 以正确的方式执行并重定向到 GET 方法。

标签: asp.net asp.net-mvc


【解决方案1】:

这是因为您已经进行了页面级别的回帖。但是,您可以将用户重定向到另一个操作结果,例如感谢用户引导的索引页面,而不是返回视图,他们可以将其带到任何他们想要的地方。否则,您可以创建一个 Ajax 帖子,以便用户保存并替换部分视图作为响应。
如果我要为工作选择正确的方法,ajax 方法将是首选。

HTH

【讨论】:

    【解决方案2】:

    代替

     return View("ThankYou");
    

    试试

     return RedirectToAction("ThankYou");
    

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

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

    【讨论】:

    • 请为您的答案添加一些解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多