我想使用PostBackUrl将TextBox1的值从一个页面传递到另一个页面。所以这是第一页的代码。
<form id="form1" runat="server">
<div>
<h2>Working With the Previous Page Object</h2>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/Default7.aspx"/>
</div>
</form>
现在,这是从First Page:
中检索值的页面的代码protected void Page_Load(object sender, EventArgs e)
{
Page previousPage = Page.PreviousPage;
if(previousPage != null)
{
Label1.Text = ((TextBox)previousPage.FindControl("TextBox1")).Text;
}
}
当然我已插入名为&#34; Label1&#34;在从第一页检索TextBox1的值的页面上。
我看过很多教程都做同样的事情,但它对我不起作用,我不知道为什么。欢迎任何帮助。
答案 0 :(得分:0)
可能在这里,FindControl()
无法识别任何名为TextBox1
的控件,它是您在设计代码中提供的ID。
您可以尝试在FindControl()
中使用该控件的完整唯一ID,如下所示:
Label1.Text = ((TextBox)previousPage.FindControl("ctl00$ContentPlaceHolder1$TextBox1")).Text;
此唯一ID将是在将控件呈现为HTML时在运行时生成的ID。您可以使用浏览器中的inspect元素从HTML源代码中读取它。
作为另一种选择,您还可以先尝试查找ContentPlaceHolder
,然后找到其中包含给定ID的TextBox
。
希望这有帮助。
答案 1 :(得分:0)
样品
WebForm1.aspx的
<form id="form1" runat="server" action="WebForm2.aspx" method="post">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" Text="Button" UseSubmitBehavior="true" />
</div>
</form>
WebForm2.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Request.Form.GetValues("TextBox1")[0]);
}
答案 2 :(得分:0)
<强> WebForm1.aspx的强>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>
</form>
<强> WebForm1.aspx.cs中强>
protected void Button1_Click(object sender, EventArgs e)
{
Session["TextBox1Value"] = TextBox1.Text;
Response.Redirect("WebForm2.aspx");
}
<强> WebForm2.aspx.cs 强>
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session["TextBox1Value"]);
}