C# 如何将server.transfer转换为一个页面,然后将server.transfer转换回原始页面

C# 如何将server.transfer转换为一个页面,然后将server.transfer转换回原始页面,c#,asp.net,server.transfer,C#,Asp.net,Server.transfer,我如何使用以下方式转到确认页面: protected void Transfer_Click(object sender, EventArgs e) { if (Page.IsValid) { Server.Transfer("~/NewApplicationConfirmation.aspx"); } } 然后,在新页面上,如果用户单击“编辑”,则将NewApplicationConfigurat

我如何使用以下方式转到确认页面:

    protected void Transfer_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            Server.Transfer("~/NewApplicationConfirmation.aspx");
        }
    }
然后,在新页面上,如果用户单击“编辑”,则将NewApplicationConfiguration.aspx传输回原始页面:

    protected void Edit_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            Server.Transfer("~/NewApplication.aspx");
        }
    }
当我单击“立即编辑”时,它只会清空NewApplicationConfirmation.aspx中的所有数据,而不会更改回NewApplication.aspx

注:

-当我执行第一次服务器传输时,顶部的地址不会从/NewApplication更改,当我单击编辑时,顶部的地址会更改为/NewApplicationConfirmation

-我正在使用ASP.NET4.5C

-默认情况下安装FriendlyURL

-我在两页上都使用母版页

编辑其他信息:

当我进行第一次转移时,我使用

var cp = PreviousPage.Master.FindControl("MainContent") as ContentPlaceHolder; 
TextBox PrevinputAppName = cp.FindControl("inputAppName") as TextBox;
inputAppName.Text = PrevinputAppName.Text; 

查找控件。如何将这些内容转移回原始页面?另外请注意,当我执行第二个server.transfer时,确认页面显示为空白-浏览器中不显示newapplication.aspx页面

移动到重定向页面时,可以在会话值中使用页面名称,将当前页面名称放入会话中,单击“上一步”时,可以使用会话值重定向上一页。完成工作后,使会话为空

如果要使用会话变量,请使用此选项,我已在下面提到:

protected void Transfer_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        Session["page"]="NewApplication.aspx";
        Server.Transfer("~/NewApplicationConfirmation.aspx");
    }
}
protected void Edit_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        Server.Transfer(Session["page"].ToString());
    }
}

关于地址栏中的url不改变,它不会改变。这就是调动的作用。服务器在内部将执行转移到另一个页面,而不通知客户端。如果您试图让客户端转到其他页面,则需要Response.Redirectnewpage.aspx;我明白,但是你能把服务器调回原来的页面吗?是的。那正是你在做的。因为我假设你没有传递任何参数,当你返回到原始页面时,你正在创建一个新的实例,它没有你的数据,请用这些额外的信息更新你的原始问题。这将使阅读变得更容易我的建议是使用重定向而不是传输,并且熟悉GET vs POST和QueryString vars vs Session VARSTACK看,他使用了不同的方法。是的,你可以使用查询字符串,但您要说的是不要修改URL,只需在查询字符串中传递值,如~/NewApplicationConfirmation.aspx?page=NewApplication,并使用它像Server.TransferRequest.QueryString[page]+.aspx;我有50个变量通过。如果我使用查询字符串,我担心会达到最大字符数。不要担心。你可以通过这个。或者也可以使用会话变量。让我用会话更新我的答案。
protected void Transfer_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        Session["page"]="NewApplication.aspx";
        Server.Transfer("~/NewApplicationConfirmation.aspx");
    }
}
protected void Edit_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        Server.Transfer(Session["page"].ToString());
    }
}