从 FormCollection 元素获取多个复选框
给定多个 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)
。
Given multiple HTML checkboxes:
<input type="checkbox" name="catIDs" value="1" />
<input type="checkbox" name="catIDs" value="2" />
...
<input type="checkbox" name="catIDs" value="100" />
How do I retrive an array of integers from a FormCollection in an action:
public ActionResult Edit(FormCollection form)
{
int [] catIDs = (IEnumerable<int>)form["catIDs"]; // ???
// alternatively:
foreach (int catID in form["catIDs"] as *SOME CAST*)
{
// ...
}
return View();
}
Note: I read the related questions and I don't want to change my action parameters, eg. Edit(int [] catIDs)
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当您有多个同名控件时,它们是逗号分隔值。换句话说:
catIDs 是“1,2,3,...”
因此,要获取所有值,您可以执行以下操作:
或者使用 Linq:
然后您可以枚举所有值。
When you have multiple controls with the same name, they are comma separated values. In other words:
catIDs is "1,2,3,..."
So to get all the values you would do this:
Or using Linq:
Then you can enumerate through all the values.
更安全的方法是使用:
form.GetValues("CatIds")
这将为您提供帖子中传递的数组。以防万一您的输入中包含逗号。The safer way would be to use:
form.GetValues("CatIds")
this will get you the array passed in the post. Just in case you had commas in your input.