2014-02-18 45 views
0

我有一個C#項目,其中textbox動態創建,當提交表單時,後面的代碼需要檢索textbox的值。ASP.NET控件ID特殊字符

textboxid包含$美元符號和檢索value當它說empty

想知道$被認爲是ID的特殊字符還是有辦法解決這個問題?

//這裏是我的示例代碼

//Create Form 
foreach (DataRow row in setOfColumns.Rows) 
{ 
    TextBox txtBox = new TextBox(); 
    txtBox.ID = row["NameOfColumn"] + " textbox"; //Where row["NameOfColumn"] = "Money $" 
} 

//Display form on browser values 
name="ctl00$ContentPlaceHolder1$ctl00$Money $" 
id="ContentPlaceHolder1_ctl00_Money $" 
value="$3,392" 

//Submit Form 
DataTable dt = new DataTable(); 
foreach (Control c in controls) 
{ 
    if (c is TextBox) 
    { 
     DataRow dr = dt.NewRow(); 
     String txtValueCtrl = ((TextBox)c).Text.ToString(); //txtValueCtrl = "", it returns empty value for the textbox 
     dr["Value"] = txtValueCtrl; 

     dt.Rows.Add(dr); 
    } 
} 

//Once I remove the '$' from the txtBox.ID it is able to retrieve the value from the textbox 
+0

請顯示一些代碼給我們至少一點你如何做這件事。例如,它是一個ASP.NET TextBox控件嗎? –

+1

當表單被提交時,它不是在表單數據中用作鍵的'id'屬性,而是'name'屬性。什麼是文本框的名稱? – Guffa

+0

[在ASP.NET中訪問控制客戶端名稱而不是ID](http://stackoverflow.com/questions/5763557/accessing-control-client-name-and-not-id-in-asp-net) – Aristos

回答

0

如果您正在使用或以上.NET 4.0,你可以通過添加屬性「的ClientIDMode」阻止這種行爲,以「靜」,這將不再導致客戶端ID將按照您所看到的方式進行修改。

關於您無法訪問該值的信息:您確定您已經爲控件打開了視圖狀態嗎?

+0

我沒有問題,控制ID被修改的方式被修改,因爲我不在尋找基於ID本身的控件,代碼查看頁面上的所有元素並選擇價值的具體一個。 我試着將控件的viewstate設置爲true,但它仍然沒有返回文本框的值。 – user3325717