2011-04-17 103 views
9

我很驚訝地看到昨晚我的代碼工作正常,第二天突然我的textbox.text總是有空字符串..
我的代碼是:textbox.text總是返回空字符串而不是用戶輸入的文本

Name of Event* : 

    <br /> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <br /> 

後面的代碼:

protected void Page_Load(object sender, EventArgs e) { 
} 

protected void create_Click(object sender, EventArgs e) { 

    if (!object.Equals(Session["UserLoginId"], null)) { 

     int mid = 0; 
     int cid = 0; 
     bool valid = true; 

     if (this.TextBox1.Text == "") { 

      error.Text = "<p style='color:red'>Marked Fields are compulsory!!</p>"; 

     } 

     else { 
      .... // database insert .... 
     } 

我總是結束了與error.text值。

爲什麼?

+0

我懷疑在這裏沒有包含代碼的情況。也許在'Page_Load'中有一些正在清除'TextBox'的東西? – David 2011-04-17 11:32:12

+1

在你的應用程序中可能有多個表單標籤webform只有一個表單標籤允許檢查 – 2014-07-23 20:01:12

+1

@ImranRashid完全相同的問題毀了我的整個一天..具有runat = server屬性的表單標籤出現在母版頁中,首先,我在代碼後面得到了空值...然後我結束了兩個服務器端表單標記錯誤! :/ – sohaiby 2015-04-26 14:41:03

回答

1

如果頁面回發,則所有輸入的用戶數據都將被刪除,因爲控件是無狀態的,所以您應該通過EnableViewState = true保持您的數據輸入。

+0

@gitesh - 將此代碼添加到您的問題。如果沒有別的,它會被格式化得更好。 – ChrisF 2011-04-17 11:40:11

+0

我在Page_Load中沒有做任何事情 – 2011-04-17 11:44:02

+0

是'create'你的按鈕? ,請發佈按鈕的'aspx',我想知道你是否使用更新面板? – 2011-04-17 11:48:53

3

有點提到,但你應該確保你檢查你的Post_Back事件沒有清除你的文本框。它會默認。 嘗試類似這樣:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
     { 
      if (this.TextBox1.Text == "") 
      { 
       error.Text = "<p style='color:red'>Marked Fields are compulsory!!</p>"; 
      } 
     else 
     { 
      //..... 
     } 
    } 
} 
+0

不工作! 而我已經找出原因,但不知道爲什麼會發生這種情況 我已經改變了我的主文件,並用新的主文件設計它不工作,否則代碼是好的,我正在檢查它。 現在爲什麼新的主文件正在使asp文本框在postpostback之後失去狀態...... ???? – 2011-04-17 13:12:52

0

我有這個問題,但我使用Telerik Ajax請求在JavaScript中的目標。我有一個RadTextBox和一個RadButton。我從他們兩個調用相同的代碼,但如果我從文本框中調用它並請求回發,則該文本框在頁面加載中爲空。所以我打電話RadAjaxManager.ajaxRequestWithTarget('someUserControlClientID', 'myTextBoxText'); 因此,在page_load中,我可以抓取文本,如果它沒有發送到服務器的發送參數,Request.Form("__EVENTARGUMENT")將保存我的文本框的值。順便說一下,R​​adAjaxManager.ajaxRequestWithTarget就像__doPostBack('targetID', 'arguments');。希望這可以幫助某人。我沒有時間調查爲什麼我輸入了這個請求的文本,所以這是我做的解決方法。

2

我有一個類似的問題。我有一個textarea在回發上向數據庫提供數據。我還設計了頁面來填充來自同一數據庫字段的textarea。它失敗的原因是因爲我忘記將我的重裝邏輯放在if(!IsPostPack) {}塊內。當發生回發時,頁面加載事件再次被激發,並且在我可以記錄初始值之前,我的重新加載邏輯清空了textarea。

相關問題