2017-04-13 21 views
1

好了,所以我想创造一种注册向导,所以有如下面的一个ASP中不同的部分:C#找不到ASP.net文本框的内容

<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); 

但是这两种方式似乎都不起作用。任何有关如何获得文本框值的帮助将不胜感激,非常困惑这个问题。

回答

2

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

+0

手风琴的每个部分都有一个表格标签,这似乎是它的问题。删除这些标签有一切工作。 – user4184963

+0

我的回答也有帮助吗?如果是这样,一个upvote会做的伎俩。快乐的编码。 –

+0

是的,你带我走了看表单标签的道路,所以谢谢你:) – user4184963

0

如你直接使用Textbox,无需使用的FindControl的:

尝试访问它们如下

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

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

termaddress(txttermhouse , txttermstr , txttermpostcode); 
+0

@ user4184963你在哪里打电话给我,我的意思是在哪个事件?并告诉我你的page_load方法 – Webruster

0

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

你可以简单地访问它们如下:

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

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

+0

正如我所提到的那样,我尝试了你的建议方法。 c#仍然将文本框看作是空的 – user4184963

+0

您可以发布您的Page_Load事件吗?还在哪个事件中你正在执行该代码?它在更新面板内吗? –