0

我想使用 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>

现在,这里是从第一页检索值的页面的代码:

protected void Page_Load(object sender, EventArgs e)
    {
        Page previousPage = Page.PreviousPage;
        if(previousPage != null)
        {
            Label1.Text = ((TextBox)previousPage.FindControl("TextBox1")).Text;
        }
    }

当然,我在从第一页检索 TextBox1 值的页面上插入了一个名为“Label1”的标签。

我看到很多教程都在做完全相同的事情,但它对我不起作用,我不知道为什么。欢迎任何帮助。

4

3 回答 3

0

可能在这里,FindControl()无法识别任何名为TextBox1您在设计代码中提供的 ID 的控件。

您可以尝试使用该控件的完整唯一 ID,FindControl()如下所示:

Label1.Text = ((TextBox)previousPage.FindControl("ctl00$ContentPlaceHolder1$TextBox1")).Text;

此唯一 ID 将是在将控件呈现为 HTML 时在运行时生成的 ID。您可以使用浏览器中的检查元素从 HTML 源代码中读取它。

作为另一种选择,您还可以尝试查找第ContentPlaceHolder一个,然后在其中查找TextBox具有给定 ID 的 。

希望这可以帮助。

于 2015-12-08T11:28:56.403 回答
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"]);
        }
于 2015-12-08T12:48:10.233 回答
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]);
    }
于 2015-12-08T11:50:04.490 回答