2017-04-13 113 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事件嗎?還在哪個事件中你正在執行該代碼?它在更新面板內嗎? –