如何使用Server.Transfer("default.aspx")
更好的性能在网站内导航。当我使用它时,它不会更改地址栏中的URL。如何通过server.transfer实现新的URL。 或(如果不是)如何通过Response.Redirect("default.aspx")
获得效果。
答案 0 :(得分:7)
您需要了解Response.Redirect("page.aspx")
和Server.Transfer("page.aspx")
Server.Transfer的:
它不会更改URL,因此不用于调试目的
因为您不确定浏览器中哪个页面正在运行
因为网址可能不会在多个Server.Transfer
中更改
语句。
它会将表单上所有控件的数据发布到下一页
您可以使用Request.Form["myTextBox"]
它只能在同一个域中运行,不会在外部重定向 当前域名。
它不需要从浏览器返回服务器上的往返,所以它是
与Response.Redirect
相比更快。
使用最佳判断何时使用Response.Redirect
以及何时使用Server.Transfer
。我只建议使用'Server.Transfer',如果你想将Form Controls的数据从一个页面发送到另一个页面,否则它会给你一个调试的噩梦。
答案 1 :(得分:2)
我不确定我是否更喜欢这种方法,但如果您坚持使用Server.Transfer
,一旦您的回复到达浏览器,您就可以使用HTML5 History API
更改浏览器地址栏中的网址正在那里处理。请注意,只有较新的浏览器才支持此功能,但随着时间的推移,这应该会成为一个问题。
您需要在页面中使用一段JavaScript来操纵历史记录的当前状态。这看起来像是:
<script type="text/javascript">
window.history.pushState({ path: <pageurl> }, '', <pageurl>);
</script>
<pageurl>
占位符必须在服务器上设置为您Server.Transfer
来电中实际处理的网页的真实网址。
现在有很多关于如何在网上使用html5历史API的例子,例如: http://html5demos.com/history