Как узнать, какие флажки были выбраны на странице HTML через HttpContext.Current.Request.Form? - PullRequest
2 голосов
/ 10 января 2012

У меня есть что-то вроде этого на мой взгляд:

<input type="checkbox" value="1" name="services-for" />
<input type="checkbox" value="2" name="services-for" />
<input type="checkbox" value="3" name="services-for" />

Допустим, пользователь проверил 1-й и 3-й.

Моя функция контроллера для действия POST выглядит следующим образом:

    public ActionResult SaveProfile()

, а не SaveProfile(string name, List<int> servicesFor) и еще много чего из-за большого количества входных полей (более 100) и того факта, что многие из них имеют значения, закодированные в их именах (например, name = "item-542146"). 1010 *

Поэтому я использую HttpContext.Current.Request.Form для доступа к значениям формы. Тем не менее, HttpContext.Current.Request.Form["services-for"] возвращает ноль, в то время как он работает нормально для обычного ввода текста, т. Е. Не множественный выбор.

Что я могу сделать?

1 Ответ

2 голосов
/ 10 января 2012

Вам лучше использовать параметр FormCollection, как указано ниже, а не извлекать значения из HttpContext.Current.Request, так как это по-прежнему позволяет легко тестировать методы действий:

public ActionResult SaveProfile(FormCollection form)
{
    var servicesFor = (form["services-for"] ?? "")
        .Split(',')
        .Select(int.Parse);

    // ...
}

Обратите внимание, что form["services-for"] может возвращать ноль, если в форме, которая была POSTed, нет проверенных входных элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...