C# 为什么连续调用Server.Transfer会更改url?
我正在使用C# 为什么连续调用Server.Transfer会更改url?,c#,asp.net,C#,Asp.net,我正在使用Server.Transfer在单击按钮时加载另一页的内容。这与预期的一样,url保持不变。但是,如果我尝试在第二个页面中单击按钮加载第三个页面,url将更改为第二个页面的url。我希望它保留第一页的url 例如: Page1.aspx加载。 Url:../Page1.aspx 内容:Page1.aspx Server.Transfer(“~/Page2.aspx”)点击按钮。 Url:../Page1.aspx 内容:Page2.aspx Server.Transfer(“~
Server.Transfer
在单击按钮时加载另一页的内容。这与预期的一样,url保持不变。但是,如果我尝试在第二个页面中单击按钮加载第三个页面,url将更改为第二个页面的url。我希望它保留第一页的url
例如:
Page1.aspx
加载。
- Url:
../Page1.aspx
- 内容:
Page1.aspx
Server.Transfer(“~/Page2.aspx”)
点击按钮。
- Url:
../Page1.aspx
- 内容:
Page2.aspx
Server.Transfer(“~/Page3.aspx”)
点击按钮
- Url:
../Page2.aspx
- 内容:
Page3.aspx
Response.Redirect("~/page.aspx",false)
调用
Server.Transfer()
时,第一页的执行将停止,而第二页将在同一HTTP请求中执行。然后,第二个页面(Page2.aspx)将以与直接向其URL发出的任何正常请求相同的方式执行,因此表单的操作将设置为其自己的URL(尽管从Server.Transfer()调用)
如果情况并非如此,则在提交表单时,它将发布到Page1.aspx(如您所期望的),但此页面不一定包含相同的控件,并且能够处理请求。您是指返回的URL还是用户地址栏中的URL?Server.Transfer不会更改客户端的URL。在步骤2,您应该检查表单的“操作”属性。我敢打赌它是page2.aspx(这很有意义)@JohnFx我是指地址栏中的url。它确实改变了,这就是我认为奇怪的地方。Tom Haigh的回答(以及jbl的评论)解释了为什么会发生这种情况。啊,这是有道理的。那么有没有办法保存url呢?我想您可以使用用户控件而不是页面,并从单个页面(可能是多视图)管理隐藏/显示的内容等。不过,这很可能最终会变得一团糟,因为您无法直接从URL访问大型viewstate和子页面(也就是说,您必须点击一些回发才能到达任何地方)。你也可以考虑使用iFrAME来屏蔽URL更改,但是这又不是很好。这根本不是OP所要求的。