Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 单击“后退”按钮,仍会显示上一页上的错误消息_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 单击“后退”按钮,仍会显示上一页上的错误消息

Asp.net mvc 3 单击“后退”按钮,仍会显示上一页上的错误消息,asp.net-mvc-3,Asp.net Mvc 3,我有一个非常简单的使用ASP.NETMVC3的1页表单 它有3个输入。如果用户输入正确的输入,并且数据库检索到pdf,则该pdf将显示在下一页中。我已经使用了PRG模式,在这种情况下尽可能: public ActionResult Index() { SomeModel model = new SomeModel { ... properties }; return View(model); } [HttpPost] public ActionResult Index

我有一个非常简单的使用ASP.NETMVC3的1页表单

它有3个输入。如果用户输入正确的输入,并且数据库检索到pdf,则该pdf将显示在下一页中。我已经使用了PRG模式,在这种情况下尽可能:

public ActionResult Index()
{
  SomeModel model = new SomeModel
  {
    ... properties
  };

  return View(model);
}

[HttpPost]
public ActionResult Index(SomeModel model)
{
  byte[] blob = someService.GoGetDetails(model);
  TempData.Add("blobkey", blob);

  return RedirectToAction("DisplayPdf");
}

public ActionResult DisplayPdf()
{
    return File(TempData["blobkey"] as byte[], "application/pdf");
}
问题用例如下所示。 用户输入错误的详细信息并单击提交按钮。显示红色错误文本。 然后用户输入正确的详细信息并单击提交按钮。Pdf显示。 用户然后点击后退按钮。表单显示时,前面的红色错误文本可见

测试人员提出了一项要求,即单击后退按钮时,红色文本不应出现

看起来很容易。直到你尝试。有人有解决这个问题的灵丹妙药吗

有一件事我试图妥协,但没有成功。也就是说,我尝试在DisplayPdf Action方法中使用以下代码终止浏览器上的缓存:

        this.ControllerContext.HttpContext.Response.Expires = 60;
        this.ControllerContext.HttpContext.Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);
        this.ControllerContext.HttpContext.Response.AddHeader("pragma", "no-cache");
        this.ControllerContext.HttpContext.Response.CacheControl = "no-cache";
它没有效果。也许这在webforms世界中有效。这里没有文件结果

当按下后退按钮时,没有对服务器的请求。这都是客户端的。所以,我确实可以访问javascript。但是javascript无法访问http头,因此无法区分页面的加载位置

我很想知道这个问题以前是否解决过。我的谷歌搜索结果是空的


谢谢

好的。我现在很满意。如果:

  • 亚马逊网站
  • JsFiddle.net
  • Outlook.com
  • Dropbox.com
所有人都表现出同样的行为,那么我的工作就没有达到最佳实践的水平

截取浏览器的导航按钮对我来说似乎很难。这是一个用例,我们必须确保我们的代码在用户做蠢事时不会损坏。但要优雅地解决?当浏览器将控制权从您手中夺走时,可能不是一个大的驱动因素