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