繁体   English   中英

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

[英]C# unable to find content of ASP.net Textboxes

好的,所以我尝试创建一种注册向导,因此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#获取文本框的详细信息并更新数据库:

//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和空字符串。 我也尝试过直接将文本框引用到方法中,即:

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

但是似乎没有办法。 非常感谢您提供有关如何获取文本框值的任何帮助,对此问题感到非常困惑。

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

直接使用Textbox ,无需使用FindControl:

尝试按以下方式访问它们

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

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

termaddress(txttermhouse , txttermstr , txttermpostcode );

为什么使用在服务器上运行的div找到控件? 如果您仅使用runat="server"来查找控件,则建议将其从div删除。 这会使您的响应变慢。

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

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

您确实不需要查找控件。 您可以直接访问它们。 当它在网格列模板中或在转发器等中重复时,您需要找到控件,然后需要找到控件,否则可以直接访问它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM