我有一个MVC3项目,它大量使用片段来动态加载不同页面的内容。有一些页面可以回发到控制器来上传文件。上传完成后,我希望将用户重定向回他们所在的页面。我将返回的URL传递给upload操作,然后在上载完成后将用户重定向回该页面。
这在Chrome和Firefox中工作正常,但IE忽略了片段,我被带回了我的解决方案的根页面。下面是我用来重定向用户的代码。
public virtual ActionResult UploadFile(string returnURL)
{
// Do some work here...
return Redirect(returnURL);
}有没有办法迫使IE 8保留这个片段,并像Chrome和Firefox那样运行?
如果没有,有没有解决这个问题的标准方法?
我还回顾了Eric Law关于https重定向和片段的article。它提供了一些关于不同浏览器如何处理这些片段的见解。
发布于 2012-07-12 01:32:37
在这一点上,你可能会遇到麻烦。URL片段对于URL唯一性并不重要,例如在决定是否将页面添加到浏览器缓存或将URL添加到浏览器导航历史记录时。
URL查询包含在URL唯一性分类中,但片段不包含。
IE8可能正在重定向到带有片段的URL,但它正在从浏览器缓存加载根页面(没有片段),因为该片段对于URL缓存等价性测试并不重要。
测试这一理论的一种强力方法可能是清除浏览器缓存,并在服务器上将所有页面标记为无缓存,看看这是否会改变IE8行为。如果当页面不在浏览器缓存中时,IE8会重定向到所需的页面,并且片段完好无损,那么这就证实了这个理论。这只是一个测试场景,不是用于生产部署的解决方案。
发布于 2012-07-27 03:15:09
我已经构建了一个小应用程序来重现它。它在IE9和Chrome上的表现与预期一致。
我有两个建议给你:
http://localhost:50173/Sample/?timestamp=26.07.2012%2021:11:00#myLocation
window.location = window.location + "#myLocation";
https://stackoverflow.com/questions/11437862
复制相似问题