给定多个HTML复选框:
<input type="checkBox" name="catIDs" value="1" /> <input type="checkBox" name="catIDs" value="2" /> ... <input type="checkBox" name="catIDs" value="100" />
如何在一个操作中从FormCollection中读取整数数组:
public ActionResult Edit(FormCollection form) { int [] catIDs = (IEnumerable<int>)form["catIDs"]; // ??? // alternatively: foreach (int catID in form["catIDs"] as *SOME CAST*) { // ... } return View(); }
注意:我阅读相关问题,我不想更改我的操作参数,例如。编辑(int [] catIDs)。
解决方法
当具有相同名称的多个控件时,它们是逗号分隔的值。换一种说法:
string catIDs = form["catIDs"];
catID是“1,2,3 …”
所以要获得所有的价值观你会这样做:
string [] AllStrings = form["catIDs"].Split(','); foreach(string item in AllStrings) { int value = int.Parse(item); // handle value }
或使用Linq:
var allvalues = form["catIDs"].Split(',').Select(x=>int.Parse(x));
然后你可以枚举所有的值。