2

我有一个 MVC 3 项目,它大量使用片段来动态加载不同页面的内容。有些页面会发回控制器以上传文件。上传完成后,我想将用户重定向回他们来自的页面。我将返回 URL 传递给上传操作,然后在上传完成后将用户重定向回该页面。

这在 Chrome 和 Firefox 中正常工作,但 IE 忽略了该片段,我被带回解决方案中的根页面。下面是我用来重定向用户的代码。

public virtual ActionResult UploadFile(string returnURL)
{
    // Do some work here...
    return Redirect(returnURL);
}

有什么方法可以强制 IE 8 保留片段并表现得像 Chrome 和 Firefox?

如果没有,是否有解决此问题的标准方法?

我还查看了 Eric Law关于 https 重定向和片段的文章。它提供了一些关于不同浏览器如何处理片段的见解。

4

2 回答 2

2

你可能对这个很感兴趣。URL 片段对 URL 唯一性不重要,例如在决定是否将页面添加到浏览器缓存或将 URL 添加到浏览器导航历史记录时。

URL 查询包含在 URL 唯一性分类中,但片段不包含。

可能是 IE8 正在重定向到带有片段的 URL,但它正在从浏览器缓存加载根页面(没有片段),因为片段对于 URL 缓存等效性测试并不重要。

测试这一理论的一种蛮力方法可能是清除浏览器缓存并将所有页面标记为服务器上的无缓存,看看这是否会改变 IE8 行为。如果 IE8 在页面不在浏览器缓存中的情况下重定向到所需页面且片段完整,那么这将证实该理论。这只是一个测试场景,不是生产部署的解决方案。

于 2012-07-11T17:32:36.990 回答
0

我已经构建了一个小应用程序来重现它。它在 IE9 和 Chrome 中按预期工作。

我有两个建议给你:

  • 如果是缓存问题,在 URL 中添加时间戳可能会有所帮助。尝试构建这样的 URL:

http://localhost:50173/Sample/?timestamp=26.07.2012%2021:11:00#myLocation

  • 如果它不起作用,解决方法可能是在最后呈现一个 javascript,它将导航:

window.location = window.location + "#myLocation";

于 2012-07-26T19:15:08.763 回答