我只是尝试跨页面发布的示例。
我已添加 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 的文本值,为什么这不能正常工作?
如果您有母版页,则代码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";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)