【问题标题】:C# unable to find content of ASP.net TextboxesC# 无法找到 ASP.net 文本框的内容
【发布时间】:2017-09-09 06:45:15
【问题描述】:

好的,我正在尝试创建一种注册向导,因此 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);

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

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

但这两种方法似乎都行不通。任何有关如何获取文本框值的帮助将不胜感激,对此问题非常困惑。

【问题讨论】:

    标签: c# asp.net textbox findcontrol


    【解决方案1】:

    由于你直接使用Textbox,所以不需要使用FindControl:

    尝试如下访问它们

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

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

    termaddress(txttermhouse , txttermstr , txttermpostcode );
    

    【讨论】:

    • @user4184963 你在哪里打电话,我的意思是在哪个事件上?并告诉我你的 page_load 方法
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 正如我所提到的,我尝试了您建议的方法。 c# 仍然认为文本框是空的
    • 您能发布您的 Page_Load 事件吗?另外在哪种情况下您正在执行该代码?它在更新面板中吗?
    【解决方案3】:

    如果您使用的是母版页,请确保您没有两个 &lt;form runat="server"&gt; 标记。我曾经遇到过这个问题,它就是它的结果。

    【讨论】:

    • 手风琴的每个部分都有一个表单标签,这似乎是个问题。删除这些标签后一切正常。
    • 我的回答有帮助吗?如果确实如此,那么赞成票就可以解决问题。编码愉快。
    • 是的,你带领我走上了查看表单标签的道路,所以谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多