Как выбрать значение HTML Select List в контроллере MVC Мой код в приложении - PullRequest
0 голосов
/ 27 ноября 2018

В связи с этим у меня есть Jquery, чтобы сместить выбранные значения с

@Html.ListBoxFor(m => m.SelectedQuestions, Model.Questions, new { id = "ChooseLeft",MultiSelectList=true })

на

 <select id="ChooseRight" multiple="multiple"></select>

, и функция Jquery, которую я использую, это,

<script type="text/javascript">
    $(function () {
        $("#ShiftRight,#ShiftLeft").click(function (event) {
            var ID = $(event.target).attr("ID");
            var ChooseFrom = ID == "ShiftRight" ? "#ChooseLeft" : "#ChooseRight";
            var moveTo = ID == "ShiftRight" ? "#ChooseRight" : "#ChooseLeft";
            var SelectData = $(ChooseFrom + " :selected").toArray();
            $(moveTo).append(SelectData);
            SelectData.remove;
        });
    });
</script>

Itработает нормально, перемещая значение левого списка в правый список.Но я получаю исключение нулевого значения, когда пытаюсь получить значение из правого списка в контроллере,

string ListValue = Request.Form["ChooseRight"].ToString();

Надежда на ваше предложение

Спасибо

1 Ответ

0 голосов
/ 28 ноября 2018

Чтобы использовать индексатор коллекции Request.Form, необходимо добавить атрибут name к элементу <select>:

<select id="ChooseRight" name="ChooseRight" multiple="multiple"></select>

Причина добавления атрибута name упоминается в эта ссылка MSDN :

Коллекция Form индексируется именами параметров (т.е. элементов формы) в теле запроса.Значение Request.Form[element] представляет собой массив всех значений элемента, которые встречаются в теле запроса.

Если вы не хотите добавлять атрибут name вручную, просто создайте еще один ListBoxFor с другим свойством для привязки:

@Html.ListBoxFor(m => m.ChooseRight, null, new { id = "ChooseRight", MultiSelectList = true })

А затем используйте свойство ChooseRight (с типом List<string>), например, для получения значений:

string ListValue = string.Join(",", model.ChooseRight);

Рабочий пример: .NET Fiddle

...