Получение нескольких флажков от элемента FormCollection

Учитывая несколько флажков HTML:

<input type="checkbox" name="catIDs" value="1" />
<input type="checkbox" name="catIDs" value="2" />
...
<input type="checkbox" name="catIDs" value="100" />

Как делают меня retrive массив целых чисел от FormCollection в действии:

public ActionResult Edit(FormCollection form)
{
    int [] catIDs = (IEnumerable<int>)form["catIDs"]; // ???

    // alternatively:
    foreach (int catID in form["catIDs"] as *SOME CAST*)
    {
        // ...
    }

    return View();
}

Примечание: Я считал связанные вопросы, и я не хочу изменять свои параметры действия, например. Edit(int [] catIDs).

15
задан Coral Doe 24 October 2012 в 07:36
поделиться

1 ответ

Когда у вас есть несколько элементов управления с одинаковым именем, они представляют собой значения, разделенные запятыми. Другими словами:

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));

Затем вы можете перечислить все значения.

20
ответ дан 1 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: