c# - 如何在 asp.net mvc 中使用标记在 Select2 输入中设置默认值

标签 c# javascript json asp.net-mvc-4 jquery-select2

在我的 View 中,我将此 Select2 输入框用作标签 Controller :

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 来使用已选择的标签填充输入框。我希望有人能帮助我,因为我开始感到有点失落:)

最佳答案

通过将 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);
                });
            },
...

关于c# - 如何在 asp.net mvc 中使用标记在 Select2 输入中设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19565470/

相关文章:

javascript - 如何从对象中提取2字字段?

c# - 拉伸(stretch)图像以填充可用的宽度/高度(单独)

c# - 在选择更改事件上禁用事件冒泡 - WPF

javascript - const 无法识别且未显示在控制台上

javascript - 在自定义命名空间上使用 AngularJs 并删除 window.angular

javascript - 如何在用javascript播放视频时获取搜索时间

java - Jersey 。如何根据url参数生成json和xml输出

javascript - MVC 列表框如何使用 jQuery 来选择所有,删除所有

c# - 如何在 HTTPS 中处理自定义证书?

java - Android json listview 与数组不工作