在视图中,我有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();
希望您的建议
谢谢
答案 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