首页 > 解决方案 > 如何在控制器 MVC 中选择 Html 选择列表值我的代码附加

问题描述

在视图中我有 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();

希望你的建议

谢谢

标签: .netasp.net-mvclistviewasp.net-mvc-4model-view-controller

解决方案


为了使用Request.Form集合索引器,您必须向元素添加name属性:<select>

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

此 MSDN 参考中提到了添加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


推荐阅读