Создание 28 чекбоксы с общим именем и разными значениями


Есть 28 флажков, которые дают общее название и имеют различные значения:

<input type="checkbox" name="Schedules" id="checkbox1" value="1">

В контроллер действия модератора:

public ActionResult Create(SubscriptionPlanCreateViewModel subscriptionPlanCreateViewModel, FormCollection Form)
{
    string[] AllStrings = Form["Schedules"].Split(',');
    foreach (string item in AllStrings)
    {
        int value = int.Parse(item);
        if (value == 1)
        {
            subscriptionPlanCreateViewModel.Timeschedule = "OneTime";
        }
    }
}

Используя этот код я должен использовать 28 если условия. Как я могу уменьшить размер кода?



356
2
задан 15 ноября 2011 в 05:11 Источник Поделиться
Комментарии
2 ответа

Вы можете использовать флажки, как это

<input type="checkbox" name="Timeschedule" id="checkbox1" value="OneTime">
<input type="checkbox" name="Timeschedule" id="checkbox2" value="Weekly">

и в действие контроллера значений из нескольких чекбоксов может быть получена с помощью этого метода

string[] AllStrings = Form["Timeschedule"].Split(',');

или

string[] AllStrings = Request["Timeschedule[]"].Split(',');

2
ответ дан 15 ноября 2011 в 10:11 Источник Поделиться

Мне кажется, что то, что вам действительно нужно сделать, это изменить вид код. Например, если вы делаете это:

<input type="checkbox" name="Timeschedule" id="checkbox1" value="OneTime">
<input type="checkbox" name="Timeschedule" id="checkbox2" value="Weekly">

Что автоматически привязывается к почасовой график собственность на SubscriptionPlanCreateViewModel. Однако, если пользователь выбирает несколько чекбоксов, значения, вероятно, столкнетесь с запятыми. Вы можете либо сделать почасовой график массив (который, вероятно, лучше представлять, что ты делаешь от данных перспективы) или вы можете просто заменить запятые С "|", чтобы получить строку вы говорите, что вы хотите в ваших комментариях.

3
ответ дан 15 ноября 2011 в 05:11 Источник Поделиться