Response.RRedirect-如果当前页面的URL为带哈希的目标URL,则发送带哈希的重定向时出现问题

本文关键字:URL 哈希 重定向 问题 如果 当前页 RRedirect- 目标 Response | 更新日期: 2023-09-27 17:57:36

我使用的是ASP.NET Webforms C#3.5,并使用Response.RRedirect在事件调用后重定向页面。

如果我提交一个请求,第一个请求就可以了。我正在使用响应。当前重定向。我尝试过使用Server.Transfer并将True和False作为重定向函数的第二个参数,同时尝试关闭SmartNavigation。

如果我点击我的提交按钮,页面会按照它应该做的做,锚会迫使页面到达正确的位置。如果我再次点击提交,则返回相同的URL,浏览器除了坐着"挂起"之外什么也不做。如果我从URL中删除哈希部分,重定向就可以正常工作。

只有当使用锚点将请求重定向到当前URL,并且使用锚点(哈希符号)进行新的重定向时,才会出现问题

Response.Redirect(/Script.aspx?param1=something&param2=something#anchor);

我也试过这个:

Response.Redirect(/Script.aspx?param1=something&param2=something&#anchor)

无论哪种情况,移除锚点都可以解决问题。

这个问题出现在Chrome和Firefox中。Firebug报告请求完成并显示响应字符串,所有内容看起来都应该带有磅号,除浏览器外,其他内容都挂起。我所说的挂起是指将光标显示为光标类型的进度。

Response.RRedirect-如果当前页面的URL为带哈希的目标URL,则发送带哈希的重定向时出现问题

这是Response.Redirect.的常见问题

您可以设置

Response.Headers.Add("Location", "/Script.aspx?param1=something#anchor");
Response.Status = "301 Moved Permanently"; //or whatever status code you want to deliver, 302 or 307 are standard for Response.Redirect(...)

或者,您可以将其作为额外的查询字符串参数传递,并使用javascript附加锚点:

//page
Response.Redirect("/Script.aspx?param1=something&anchor=anchor");
//script.aspx
void Page_Init(object sender, EventArgs e)
{
    ClientScript.RegisterClientScriptBlock(typeof(string), "anchor", "<script type='"text/javascript'">location.href = location.href + '#" + Request["anchor"] + "';</script>");
}