【发布时间】:2015-03-25 15:42:04
【问题描述】:
如何使用以下方法转移到确认页面:
protected void Transfer_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
Server.Transfer("~/NewApplicationConfirmation.aspx");
}
}
然后,如果用户单击编辑,则在新页面(NewApplicationConfirmation.aspx)上转回原始页面:
protected void Edit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
Server.Transfer("~/NewApplication.aspx");
}
}
当我现在单击编辑时,它只是将 NewApplicationConfirmation.aspx 中的所有数据都清空,并且不会变回 NewApplication.aspx
注意事项:
--当我进行第一次服务器传输时,顶部的地址不会从 /NewApplication 更改,并且当我单击编辑时,顶部的地址会更改为 /NewApplicationConfirmation
--我使用的是 ASP.net 4.5 c#
--FriendlyURLs 已安装(默认)
--我在两个页面上都使用母版页
编辑附加信息:
当我进行第一次传输时,我使用
var cp = PreviousPage.Master.FindControl("MainContent") as ContentPlaceHolder;
TextBox PrevinputAppName = cp.FindControl("inputAppName") as TextBox;
inputAppName.Text = PrevinputAppName.Text;
找到控件。如何将这些转移回原始页面?另请注意,当我执行第二个 server.transfer 时,确认页面显示为空白 - newapplication.aspx 页面未出现在浏览器中
【问题讨论】:
-
关于地址栏中的url不改变,它不会。这就是转移的作用。服务器在内部将执行转移到另一个页面而不告诉客户端。如果您想让客户端转到不同的页面,您需要
Response.Redirect("newpage.aspx"); -
我明白了,但是可以server.transfer回原来的页面吗?
-
是的。这正是你正在做的。并且由于(我假设)您没有传递任何参数,因此当您传输回原始页面时,您正在创建它的一个新实例,其中没有您的数据
-
请使用该附加信息更新您的原始问题。这将使事情更容易阅读
-
我的建议是您使用重定向而不是传输,并且您要熟悉 GET 与 POST,以及 QueryString vars 与 Session vars
标签: c# asp.net server.transfer