从 FormCollection 元素获取多个复选框

发布于 2024-08-28 15:02:47 字数 625 浏览 9 评论 0原文

给定多个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

Oo萌小芽oO 2024-09-04 15:02:47

当您有多个同名控件时,它们是逗号分隔值。换句话说:

string catIDs = form["catIDs"];

catIDs 是“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));

然后您可以枚举所有值。

When you have multiple controls with the same name, they are comma separated values. In other words:

string catIDs = form["catIDs"];

catIDs is "1,2,3,..."

So to get all the values you would do this:

string [] AllStrings = form["catIDs"].Split(',');
foreach(string item in AllStrings)
{
    int value = int.Parse(item);
    // handle value
}

Or using Linq:

var allvalues = form["catIDs"].Split(',').Select(x=>int.Parse(x));

Then you can enumerate through all the values.

如此安好 2024-09-04 15:02:47

更安全的方法是使用: 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文