2010-10-15 29 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

相关问题