如何有效地使用Server.Transfer

时间:2012-11-20 13:25:24

标签: asp.net response.redirect server.transfer

如何使用Server.Transfer("default.aspx") 更好的性能在网站内导航。当我使用它时,它不会更改地址栏中的URL。如何通过server.transfer实现新的URL。 如果不是)如何通过Response.Redirect("default.aspx")获得效果

2 个答案:

答案 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