C#无法找到ASP.net文本框的内容

时间:2017-04-13 08:33:00

标签: c# asp.net textbox findcontrol

好的所以我正在尝试创建一种注册向导,因此asp中有不同的部分,如下所示:

  <div class="panel panel-default">
        <div class="panel-heading">
          <h4 class="panel-title">
            <a href="#addwizard" data-parent="#accordion-demo" data-toggle="collapse">
              Term Time Address
            </a>
          </h4>
        </div>
        <div id="termaddy" class="panel-collapse collapse in"  runat="server">
          <div class="panel-body">
            <form id="form-termaddy" >
          <div class="main_input_box">
                 <div class="col-lg-6">

                    <div class="form-group">
                     <asp:TextBox ID="txttermhousenum" runat="server" placeholder="House Number" class="form-control" textmode="SingleLine"></asp:TextBox>
                         <asp:RequiredFieldValidator runat="server" id="RequiredFieldValidator28" controltovalidate="housenum" errormessage="Required Field" display="Dynamic"/>
                 </div>

                   <div class="form-group">
                    <div class="main_input_box">
                     <asp:TextBox ID="txtxtermstreet" runat="server" placeholder="Street" class="form-control"  textmode="SingleLine"></asp:TextBox>
                         <asp:RequiredFieldValidator runat="server" id="RequiredFieldValidator29" controltovalidate="street" errormessage="Required Field" display="Dynamic"/>
                 </div>
                       </div>

                   <div class="form-group">
                    <div class="main_input_box">

                     <asp:TextBox ID="txtxtermpost" runat="server" placeholder="Postcode" class="form-control" textmode="SingleLine"></asp:TextBox>
                         <asp:RequiredFieldValidator runat="server" id="RequiredFieldValidator31" controltovalidate="postcode" errormessage="Required Field" display="Dynamic"/>
                 </div>
                       </div>


                   </div>
               </div>
            </form>
          </div> <!--/.panel-body -->
        </div> <!-- /#addwizard -->
      </div> <!-- /.panel.panel-default -->

因此,每当用户填写表单并点击保存时。 c#获取文本框的详细信息并更新db:

//term time address info
        string txttermhouse = ((TextBox)termaddy.FindControl("txttermhousenum")).Text;
        string txttermstr = ((TextBox)termaddy.FindControl("txtxtermstreet")).Text;
        string txttermpostcode = ((TextBox)termaddy.FindControl("txtxtermpost")).Text;

        termaddress(txttermhouse, txttermstr, txttermpostcode);

问题是,当代码通过此部分时,它会将每个文本框视为空白,并将它们保存在db as和empty字符串中。我也尝试直接将文本框引用到方法中,即:

 termaddress(txttermhousenum.Text, txtxtermstreet.Text, txtxtermpost.Text);

但两种方式似乎都没有用。任何有关如何获取文本框值的帮助都将非常感激,对此问题非常困惑。

3 个答案:

答案 0 :(得分:2)

如果您使用母版页,请确保没有两个<form runat="server">代码。我曾经遇到过这个问题,结果就是这样。

答案 1 :(得分:0)

当您直接使用Textbox时,无需使用FindControl:

尝试按以下方式访问它们

  string txttermhouse = txttermhousenum.Text;
  string txttermstr = txtxtermstreet.Text;
  string txttermpostcode = txtxtermpost.Text;

您可以按如下方式传递给您的方法:

termaddress(txttermhouse , txttermstr , txttermpostcode );

答案 2 :(得分:0)

为什么使用运行在服务器上的div来查找控件?如果您仅使用它来查找控件,我建议您从runat="server"中删除div。这会使您的回复变慢。

您可以按如下方式访问它们:

  string txttermhouse = txttermhousenum.Text;
  string txttermstr = txtxtermstreet.Text;
  string txttermpostcode = txtxtermpost.Text;
  

你真的不需要找到控件。您可以直接访问它们。   您需要在重复内部网格列时找到控件   模板或转发器等,然后你需要找到控制   否则你可以直接访问它们。