Передача данных формы обратно в контроллер - PullRequest
1 голос
/ 19 апреля 2011

У меня проблема с параметром, не получающим значение из данных формы.Он показывает правильное количество элементов (т. Е. Если пользователь выбрал 5 параметров, список содержит 5 элементов) в списке, но все значения равны нулю.Ниже мой из моего просмотра HTML:

    @using (Html.BeginForm())
    {
       @Html.HiddenFor(s => s.SOWId)

        foreach (LabelTable.Domain.Entities.Option option in ViewBag.Options)
        {

        <div class="wizard-section" id=@option.Level>
        @Html.RadioButton("["+(option.Level-1)+"].OptionId", option.OptionId) @option.OptionName
        </div>
        }
        <div class="buttons">
        <input type="submit", value="Continue", class="button"/>
        </div>      
    }

Вот мой метод контроллера:

    [HttpPost]
    public ViewResult Wizard(StatementOfWork SOW, List<int> OptionIds)
    {
        //do something
    }

OptionIds содержит следующее при публикации: [0] = 0 [1] = 0 [2] = 0 и так далее ...

Я пытаюсь создать форму, в которой пользователю предоставляется несколько вариантов выбора (эта форма является одним из разделов мастера).

Существует 5 (или более) уровней опций.Все данные для формы отправляются в представление через ViewBag.Options.Все уровни скрыты, кроме уровня 1. После выбора уровня 1 отображается следующий уровень и так далее.Форма только отправляет обратно варианты, выбранные на каждом уровне.Первоначально я делал это с несколькими ответными записями на сервер, но мне это не нравилось (для многих циклов)

Я планирую добавить опции, выбранные на каждом уровне, в модель SOW, которую я передаю из представления.к мнению волшебника.

Ответы [ 2 ]

2 голосов
/ 19 апреля 2011

Ваш код View немного сбивает с толку, но, насколько я понимаю, вы хотите, чтобы ModelBinder связывал ваши значения радиокнопок со списком OptionIds после публикации. В этом случае имена ваших радиокнопок должны быть OptionIds[0], OptionIds[1] и т. Д. Итак, еще раз, я не уверен, что такое свойство Level, но я предполагаю, что вы хотите что-то подобное:

@Html.RadioButton("OptionIds["+(option.Level-1)+"]", option.OptionId)
0 голосов
/ 19 апреля 2011

Попробуйте заменить:

  @Html.RadioButton("["+(option.Level-1)+"].OptionId", option.OptionId)

на:

  @Html.RadioButton("["+(option.Level-1)+"]", option.OptionId)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...