首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何有效利用Server.Transfer

如何有效利用Server.Transfer
EN

Stack Overflow用户
提问于 2012-11-20 13:25:23
回答 2查看 12.7K关注 0票数 4

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-20 13:59:01

你需要理解Response.Redirect("page.aspx")Server.Transfer("page.aspx")之间的区别

Server.Transfer:

  • 它不会更改URL,因此它不是用于调试目的,因为您不确定哪个页面正在浏览器中运行,因为URL可能不会在多个Server.Transfer语句中更改。
  • 它将表单上所有控件的数据发布到下一页,您可以在那里使用Request.Form["myTextBox"]访问它们。
  • 它只在同一域中工作,不会在当前域名之外重定向。
  • 它不需要从浏览器返回服务器的往返费用,因此它比Response.Redirect更快。

使用您的最佳判断,何时使用Response.Redirect和何时使用Server.Transfer。如果您想将表单控件的数据从一个页面发送到另一个页面,我只建议使用“Server.Transfer”,否则会给您带来调试噩梦。

票数 7
EN

Stack Overflow用户

发布于 2013-02-13 11:22:34

我不太喜欢这种方法,但是如果您坚持使用Server.Transfer,那么您可以在响应到达浏览器并在浏览器上进行处理之后,使用HTML5 History API来更改浏览器地址栏中的URL。请注意,只有较新的浏览器支持此功能,但随着时间的推移,这将不再是一个问题。

您将需要页面中的一部分JavaScript来操作历史记录的当前状态。这看起来应该是:

代码语言:javascript
复制
<script type="text/javascript">
    window.history.pushState({ path: <pageurl> }, '', <pageurl>);
</script>

<pageurl>占位符必须在服务器上设置为您在Server.Transfer调用中实际处理的页面的真实URL。

到目前为止,已经有很多关于如何在网络上使用html5历史api的例子,例如http://html5demos.com/history

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13474220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档