C# 跨页投递

C# 跨页投递,c#,asp.net,.net,vb.net,c#-4.0,C#,Asp.net,.net,Vb.net,C# 4.0,我只是在尝试跨页面发布的例子。 我在default.aspx页面中添加了1个文本框和1个按钮 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button2" runat="server" Text="Button" PostBackUrl="~/About.aspx"/> protected void Page_Load(object sender, Ev

我只是在尝试跨页面发布的例子。 我在default.aspx页面中添加了1个文本框和1个按钮

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
 <asp:Button ID="Button2" runat="server" Text="Button"  PostBackUrl="~/About.aspx"/>
protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.PreviousPage != null)
        {
            TextBox SourceTextBox =
                (TextBox)Page.PreviousPage.FindControl("TextBox1");
            if (SourceTextBox != null)
            {
                Label1.Text = SourceTextBox.Text;
            }
            else
                Label1.Text = "no value";
        }
        else
            Label1.Text = "no value from previous page";
    }

当我在textbox1中输入一些文本并单击按钮时,它会转到about.aspx,但标签显示值“no value”,它没有显示textbox1的文本值,为什么不能正常工作?

如果您有母版页,则代码
页.PreviousPage.FindControl(“textbox1”)无效,因为
文本框1
位于
内容占位符下。
必须首先找到
内容占位符。
然后找到
文本框1

但有一种最简单的方法可以获得如下值:

if (Page.PreviousPage != null)
{
    if (Page.PreviousPage is PreviousPageClassName)
    {
        Label1.Text = ((PreviousPageClassName)Page.PreviousPage).TextFromBox1;
    }
    else
    {
        Label1.Text = "no value";
    }
}
else
    Label1.Text = "no value from previous page";
将其放在上一页:

public string TextFromBox1
{
    get
    {
        return TextBox1.Text;
    }
}
在重定向页面上,将aspx上的上一页声明为:

<%@ Reference Page ="~/PreviousPageName.aspx" %>

我刚刚做了一个很好的例子!所以,也许你会使用和母版页@亚里士多德:是的,我添加了母版页网站。母版页这就是为什么,上一页是母版页,在那里你必须找到内容,然后是控件。@亚里士多德:没有什么,它只是偶然发生的,你的答案是正确的&我测试过了,并且工作正常。在没有母版页的情况下,您的代码可以正常工作,但在母版页上,这就是方法。