我只是尝试跨页面发布的例子。 我添加了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&amp;中输入一些文字时点击按钮,它转到about.aspx但标签显示值“无值”,它没有显示textbox1的文本值,为什么这不能正常工作?
答案 0 :(得分:3)
如果您有母版页,则代码Page.PreviousPage.FindControl("TextBox1");
无效,因为TextBox1
位于ContentPlaceHolder.
下方,必须先找到ContentPlaceHolder.
,然后找到{{1} }}
但是有一种最简单的方法可以获得价值:
将其放在上一页:
TextBox1
并在重定向页面上声明aspx上的上一页是什么:
public string TextFromBox1
{
get
{
return TextBox1.Text;
}
}
并在代码后面获取值为:
<%@ Reference Page ="~/PreviousPageName.aspx" %>