我有一些带有唯一ID的复选框。是否可以在表单集合中找到所有复选框+ uniquenum?
之类的东西 -
foreach (var item in Collection.Request.Form["checkbox" + with UniqueIDNum])
{
//code
}
答案 0 :(得分:39)
没有
相反,您可以遍历所有密钥,并检查它们是否以checkbox
开头。
例如:
foreach(string key in Request.Form) {
if (!key.StartsWith("checkbox")) continue;
...
}
NameValueCollection enumerator将字符串作为字符串返回。
答案 1 :(得分:4)
或类似的东西
var checkBoxes = Request.Form.Keys.Where(rs=>rs.StartsWith("dummy"));
foreach(string key in checkBoxes){
// Your code
}
答案 2 :(得分:1)
您应该可以使用Linq(这应该工作,尚未测试): 我还假设复选框的ID是“复选框[ID]”。顺便说一句,表单字段中的重复ID是糟糕的坏事。
var checkboxes = (from key in Request.Form.AllKeys where key = "checkbox" + UniqueIDNum)
foreach(string key in checkboxes)
{
//do stuff
}
答案 3 :(得分:1)
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection fc)
{
string a = fc["hdn_1"].ToString(); // if you know for sure that it will have a value.
string lbl_1 = null;
foreach (var key in fc.AllKeys)
{
if (key.Contains("txt_1"))
{
lbl_1 = fc["txt_1"].ToString();
}
}
}
希望这有帮助。
答案 4 :(得分:0)
我不得不在 VB.NET 中做到这一点,在多年没有使用 VB.NET 之后甚至没有太多使用它之后,我使用了 Josh Wolf 的答案来获得以下内容:
Dim checkedOrders As IEnumerable(Of String) = From key In Request.Form.AllKeys Where key.StartsWith("chk")
If checkedOrders.Count > 0 Then
' do stuff, loop through checkedOrders, etc
End If
请注意,我的复选框都以名称中的“chk”开头(例如“chk1038”、“chk1040”等)。