代码之家  ›  专栏  ›  技术社区  ›  Mike K

如何在发布的窗体中检索控件的值?

  •  1
  • Mike K  · 技术社区  · 16 年前

    我知道这是关于ASP.Net的最简单的问题,但我很困惑。我有一个表单,我的访问者将输入姓名,地址等,然后我通过我的提交按钮的PostBackUrl属性发布到另一个页面,在那里的字段都应该重新形成新的隐藏字段,然后再次发布到贝宝。

    我的问题是我无法获取访问者在原始页面中输入的值。每当我输入“runat='server'”时,ASP.Net就会完全更改控件的ID,从而无法确定如何访问。在我试过的表格里 Request.Form["_txtFirstName"] 结果是空的。然后我试着 ((TextBox)PreviousPage.FindControl("_txtFirstName")).Text 那也是空的。我已经试过了。我想不出我该如何控制这些控制装置。为什么这东西要这么难?

    3 回复  |  直到 16 年前
        1
  •  0
  •   patmortech    16 年前

    你在使用母版页吗?如果是,则必须在内容占位符中搜索控件:

    ContentPlaceHolder placeholder = (ContentPlaceHolder)Page.PreviousPage.Master.FindControl("ContentPlaceHolder1");
    
    TextBox previousPageTextBox = (TextBox)placeholder.FindControl("TextBox1");
    
        2
  •  0
  •   Daniel Dyson    16 年前

    第一页上TextBox控件的名称是什么?不要使用clientId,使用调用FindControl时声明的ID,因此如果调用ID=“TextBox1”,请使用下面的代码查找它。

    这是文档中的标准语法,放在你的目标页面。。。

    if (Page.PreviousPage != null)
    {
        TextBox SourceTextBox = 
            (TextBox)Page.PreviousPage.FindControl("TextBox1");
        if (SourceTextBox != null)
        {
            Label1.Text = SourceTextBox.Text;
        }
    }
    
        3
  •  0
  •   Oded    16 年前

    在ASP.NET中,如果控件是服务器端控件,则只需在编码时通过给定的ID调用它,而不是通过呈现的ID调用它。

    标记:

    <input type="text" id="myId" runat="server" />
    

    string controlValue = myId.Value;
    
    推荐文章