检索已使用JavaScript重新排序的选择元素选项列表

问题描述 投票:0回答:1

我有一个名字/数字字典,从我的控制器传递到我的视图。这变为:

Model.arrayPositions[x]

然后将它们添加到选择列表中:

                <form>
                    <div class="col-xs-12">
                        <select id="ListIn" class="select-width" name="SelectionIn" multiple="multiple" size="@Model.arrayPositions.Count">
                            @foreach (var item in Model.arrayPositions)
                            {
                                if (item.Value != null)
                                {
                                    <option class="active" value="@item.Value">@Html.DisplayFor(modelItem => @item.Key)</option>
                                }
                            }
                        </select>
                    </div>
                </form>

忽略没有值的数组项,其余项添加到列表中。

然后可以使用JavaScript添加/删除项目或在列表中上下移动项目:

function AddSelected() {
    $('#ListOut option:selected').each(function (i, selected) {
        $('#ListIn').append('<option class="active" value="1">' + selected.innerText + '</option>');
        selected.remove();
    });
}
function RemoveSelected() {
    $('#ListIn option:selected').each(function (i, selected) {
        $('#ListOut').append('<option class="inactive" value="-1">' + selected.innerText + '</option>');
        selected.remove();
    });


function MoveUp() {
    var select1 = document.getElementById("ListIn");

    for (var i = 0; i < select1.length; i++) {
        if (select1.options[i].selected && i > 0 && !select1.options[i - 1].selected)
        {
            var text = select1.options[i].innerText;
            select1.options[i].innerText = select1.options[i - 1].innerText;
            select1.options[i - 1].innerText = text;
            select1.options[i - 1].selected = true;
            select1.options[i].selected = false;
        }
    }
}

(向下移动几乎与向上移动相反)

(#ListOut只是第二个列表,其中添加了值为null的数组项)

(最终值现在不太重要,所以我没有特别保留它。列表的顺序更重要)

我正在使用Javascript更改订单,以避免页面不断刷新这样一个简单的操作。

但是,一旦我按下更新按钮,我就会调用我的Controller(C#中的ASP.NET Core)。我想知道的是如何在新订单中检索列表的最终值。

如果Model.arrayPositions = {a = 1,b = 2,c = null,d = 3},它会将它们添加到列表中:[a,b,d]

然后我使用javascript删除'a'并向上移动'd',产生[d,b]

当我按下更新按钮时,我想从视图中检索[d,b]的当前列表。

实现这一目标的最佳方法是什么?或者,或者,可以使用其他方法来实现相同的目标(请注意,如果可能,我不希望页面刷新或部分刷新)。

javascript c# model-view-controller asp.net-core html-select
1个回答
1
投票

您可以使用ajax方法在单击更新按钮时点击控制器

jquery ajax的语法是: -

<script>

$.ajax({
        type:'POST',
        url : 'controllerNAME/ActionNAME',
        datatype: 'json',
        data : {'parameterOne': parameterone, 'parameterTwo' : parametertwo,...},
        success : function(response)
        {
             alert(response.d)
             //put your logic here for further advancements
        }
});

</script>
© www.soinside.com 2019 - 2024. All rights reserved.