如何在Controller MVC中选择HTML选择列表值我的代码已附加

时间:2018-11-27 11:58:54

标签: .net asp.net-mvc listview asp.net-mvc-4 model-view-controller

在视图中,我有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>

在将值从左移到右移时工作正常。但是,当我尝试从控制器的权限列表中获取值时,我得到了空值异常。

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

希望您的建议

谢谢

1 个答案:

答案 0 :(得分:0)

要使用Request.Form集合索引器,必须将name属性添加到<select>元素:

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

this MSDN reference中提到了添加name属性的原因:

  

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