如何在 Select2 输入中设置默认值,并在 asp.net mvc 中标记

本文关键字:asp 并在 net mvc 默认值 Select2 输入 设置 | 更新日期: 2023-09-27 18:36:39

在我看来,我有这个 Select2 输入框充当标签控制器:

CSHTML

<input id="tagSelector" type="hidden" style="width: 300px"/>

.JS

  $('#tagSelector').select2({
            placeholder: 'Select a tag...',
            multiple: true,
            ajax: {
                url: '@Url.Action("SearchTags", "UnitDetails")',
                dataType: 'json',
                data: function(term, page) {
                    return {
                        searchTerm: term
                    };
                },
                results: function(data, page) {
                    return { results: data };
                }
            },
            createSearchChoice: function(term) {
                return { id: term, text: term };
            }
        }).on("removed", function(e) {
            var url = '@Url.Content("~/UnitDetails/UnTagUnit/" + Model.ViewUnitContract.Id)';
            var id = e.val;
            var tagName = e.choice.text;
            console.log(id + " : " + tagName);
            $.ajax({
                url: url,
                data: { selectedItem: tagName },
                type: 'GET',
                dataType: 'json',
                success: function() {
                },
                error: function() {
                }
            });
        })
            .on("select2-selecting", function(e) {
                var url = '@Url.Content("~/UnitDetails/TagUnit/" + Model.ViewUnitContract.Id)';
                var id = e.val;
                var tagName = e.object.text;
                console.log(id + " : " + tagName);
                $.ajax({
                    url: url,
                    data: { selectedItem: tagName },
                    type: 'GET',
                    dataType: 'json',
                    success: function() {
                    },
                    error: function() {
                    }
                });
            });
    });

C#

public JsonResult GetInitialTags(int id)
{
    Model = new UnitDetailsModel(UnitClient.GetUnit(id));
    foreach (var tag in Model.ViewUnitContract.Tags)
    {
        Model.TagsSelected.Add(tag);
    }
    var result = Model.TagsSelected.Select(a => new
        {
            id = a.Id,
            text = a.Name
        });
    return Json(result, JsonRequestBehavior.AllowGet);
}

现在,我似乎无法弄清楚如何使用initSelection来使用已选择的标签填充输入框。我希望有人能帮我解决这个问题,因为我开始感到有点迷茫:)

如何在 Select2 输入中设置默认值,并在 asp.net mvc 中标记

通过将 initSelection 属性添加到我的 javascript 中找到了解决方案:

...
            initSelection: function (element, callback) {
                $.get('@Url.Action("GetInitialTags", "UnitDetails", new { id = Model.ViewUnitContract.Id })', function (initTags) {
                    var tags = [];
                    for (var i = 0; i < initTags.length; i++) {
                        tags.push({ "id": initTags[i].id, "text": initTags[i].text });
                    }
                    callback(tags);
                });
            },
...