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)
.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With