2010-10-15 59 views
3

我不確定主題是否很好地描述了我的問題,但我正在用jQuery創建一些HTML元素(文本框),我永遠不知道我會創建多少(它通過數據庫循環)。然後,我想要獲取代碼中的所有元素並執行一些操作(將它們插入另一個數據庫)。如何查找名稱以c#中的某個字符串開頭的HTML元素的數量?

我知道我可以使用

string n = String.Format("{0}", Request.Form["hiddenField0"]).ToString(); 

爲了得到第一個文本框,但如果。我不知道有多少文本框,我已經創建並希望他們呢?他們的名字以hiddenField加上一個遞增的數字開頭。

有沒有一種方法可以遍歷所有具有以特定字符串開頭的名稱的元素?

預先感謝

回答

8
var dictionary = Request.Form.Keys 
    .Cast<string>() 
    .Where(x => x.StartsWith("abc")) 
    .ToDictionary(x => x, x => Request.Form[x]); 

返回包含與「ABC」開頭的所有形式的元素的鍵/值的字典。

更新:可憐的OP是使用.Net 2.0。所以這裏是老派的答案:

Dictionary<string, string> keys = new Dictionary<string, string>(); 
foreach (string key in request.Form.Keys) 
{ 
    if (key.StartsWith("abc")) 
     keys[key] = request.Form[key]; 
} 
+0

+1打我吧。 :)我建議使用'BaseGetAllKeys'方法(因爲'Request.Form'是'NameValueCollection')。保存演員陣容,因爲它會返回一個'string []'。 – RPM1984 2010-10-15 03:31:51

+0

@ RPM1984,我看到'BaseGetAllKeys'聲明爲'protected',不是? – 2010-10-15 03:37:14

+0

嗨,我得到'System.Collections.Specialized.NameObjectCollectionBase.KeysCollection'不包含'Cast'的定義,並且沒有擴展方法'Cast'接受類型爲'System.Collections.Specialized.NameObjectCollectionBase.KeysCollection'的第一個參數被發現(你是否缺少使用指令或程序集引用?)當tryint做到這一點 – Morgan 2010-10-15 03:40:57

相關問題