如何解决Response.Redirect-如果当前页面的目标URL带有Hash,则发送带有Hash的重定向问题
| 我正在使用ASP.NET Webforms C#3.5,并使用Response.Redirect在事件调用后重定向页面。 如果我提交请求,则第一个请求可以正常工作。我目前正在使用Response.Redirect。 我尝试使用Server.Transfer并将True和False作为第二个参数传递给Redirect函数,以及尝试关闭SmartNavigation。 如果单击“提交”按钮,页面将执行预期的操作,并且锚点将页面强制到正确的位置。如果再次单击“提交”,则返回相同的URL,并且浏览器除了坐着并“挂起”以外不执行任何操作。 仅当使用锚将请求重定向到当前URL并使用锚(哈希符号)进行新的重定向时,才会出现问题。Response.Redirect(/Script.aspx?param1=something¶m2=something#anchor);
我也尝试过:
Response.Redirect(/Script.aspx?param1=something¶m2=something&#anchor)
;
在这两种情况下,都可以删除锚来解决问题。
在Chrome和Firefox中会出现此问题。 Firebug报告请求已完成,并显示响应字符串,所有内容看起来都应该带有井号,但除了浏览器之外,其他所有设备都将挂起。挂起是指将光标显示为进度\\正在执行的光标类型。
解决方法
这是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>\");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。