2

我只是在尝试跨页发布的示例。我已将 1 个文本框和 1 个按钮添加到 default.aspx 页面

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
 <asp:Button ID="Button2" runat="server" Text="Button"  PostBackUrl="~/About.aspx"/>

我已将以下代码添加到 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 但标签显示值“无值”,它没有显示 textbox1 的文本值,为什么这不能正常工作?

4

1 回答 1

3

如果您有母版页,则代码Page.PreviousPage.FindControl("TextBox1");不起作用,因为TextBox1它在下面ContentPlaceHolder.并且必须先找到ContentPlaceHolder.然后找到TextBox1

但是有一种最简单的方法可以将值设为:

把它放在上一页:

public string TextFromBox1
{
    get
    {
        return TextBox1.Text;
    }
}

并在重定向页面上声明 aspx 上的上一页是:

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

并在后面的代码中获取值为:

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";
于 2012-11-03T12:17:30.953 回答