MVC +在列表框中传递选定的值

时间:2013-01-14 22:21:09

标签: jquery asp.net-mvc-3

所以我有2个简单的selectbox控件(MVC中的@ Html.ListBoxFor),

我允许用户从左侧选择框中进行选择并将所选项目向右移动,这非常有效(请参阅我的示例:http://jsfiddle.net/tekguy/NJGzu/

但是如何将右侧列表框中的所有内容传递给MVC?

如果用户意外点击右侧框中的一个项目,其他所有内容都未被选中,则会出现问题,这将是唯一传递回控制器的值。

有关如何解决此问题的任何想法?我正在考虑使用javascript在表单帖子的右侧文本框中选择所有内容。但还有其他方法可以解决这个问题吗?

HTML CODE:

<select id="list1" multiple>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
</select>

<input type="button" value=">>" id="moveRight" />
<input type="button" value="<<" id="moveLeft" />

<select id="list2" multiple>
    <option value="4">Option 4</option>
</select>

JAVA-SCRIPT CODE:

$( function() {
    $('#moveRight').click(function(){
        $('#list1 option:selected').each(function(){
            $(this).remove().appendTo("#list2");
        });
    });

    $('#moveLeft').click(function(){
        $('#list2 option:selected').each(function(){
            $(this).remove().appendTo("#list1");
        });
    });
});

2 个答案:

答案 0 :(得分:0)

我需要一些类似于此的项目。我发现只有选中的选定项目被回发。 我按照你的建议使用了javascript。这样的事情对我有用。

$("#MassUpdateForm").submit(function() {
    $("#select_right").children("option").each(function() {
        this.selected = true;
    });
});

答案 1 :(得分:0)

您无需循环以追加元素。一个特定的元素只能在dom中存在一次..所以除非你克隆并附加..所以不需要先删除元素。然后,您可以在表单

的提交事件中更改所选的所有选项
$(function () {
  $('#moveRight').click(function () {
    $('#list1 option:selected').appendTo("#list2"); // this will move all selected options to right side
  });
  $('#moveLeft').click(function () {
    $('#list2 option:selected').appendTo("#list1"); // this will move all selected options to left side
  });
  $('yourform').on('submit', function () {
    $('#list2 option').prop('selected', true); // set all options on right side to selected
  });
});