导航到我的网页的一些用户通过以下网址进行操作:http://domain/ProductDetail.aspx?Productid=123#Pricing
在本节中是一个asp:按钮进行购买。此按钮会导致回发,当页面在broswer中重新呈现时,FragmentIdentifier #Pricing仍在地址窗口中。
这会导致问题,因为在页面上呈现的新内容在浏览器导航到#Pricing部分时不可见。
如何在回发时阻止FragmentIdentifier?
澄清: 看来这个问题发生在Chrome中,但在IE8或FireFox中不会发生。在回发后,Chrome会保留#FragmentIdentifier,即使在action属性中没有对它进行引用也是如此。
答案 0 :(得分:2)
你不能,浏览器不发送它:
使用URI引用对其执行检索操作时 标识资源,可选的片段标识符,分隔 由交叉阴影线(“#”)字符组成的URI由附加组成 用户代理在之后解释的参考信息 检索行动已成功完成。因此,事实并非如此 URI的一部分,但通常与URI结合使用。
答案 1 :(得分:0)
您可以强制浏览器通过重定向到同一页面来删除#标记。
答案 2 :(得分:0)
浏览器不会在服务器端发送URL片段。您无法修改它们,您可以尝试的唯一选项是URL重写,如果有帮助的话。祝你好运......
答案 3 :(得分:0)
ASP.NET引擎将导致一个没有任何给定URL的简单提交,因此浏览器将被强制获取当前页面的URL。
你可以通过将自动执行的javascript挂钩到HTML中来消除散列后的哈希值,这会将哈希值替换为空字符串。
以下是一个例子:
if(this.Page.IsPostback)
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "RemoveHash", "window.location.hash=''", true);
}