首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用asp.net内核中的select2选项?

如何使用asp.net内核中的select2选项?
EN

Stack Overflow用户
提问于 2017-08-21 12:45:34
回答 1查看 2.1K关注 0票数 0

我在asp.net核心工作。我正在使用typescript。我想用Select2。如何在asp.net内核中使用select2?有没有使用select2需要安装的包?

EN

回答 1

Stack Overflow用户

发布于 2019-12-03 14:38:30

参加聚会有点晚了,但也有同样的问题。

我需要添加一个select2-multiselector,其中的数据是通过ajax加载的。因此,您可能需要进行一些更改。

您可以添加以下js和css:

代码语言:javascript
复制
<link href="https://cdn.jsdelivr.net/npm/select2@4.0.12/dist/css/select2.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/select2@4.0.12/dist/js/select2.min.js"></script>

我的视图(模型是一个IEnumerable):

代码语言:javascript
复制
...
@for (int index = 0; index < Model.Count; index++)
{
    <div>
        <input type="hidden" asp-for="@Model[index].Id"/>
        <input type="text" asp-for="@Model[index].Title">

        <select class="js-example-basic-multiple" style="width: 100%;" asp-for="@Model[index].TagIds" multiple="multiple">
            @foreach (TagDetailModel tag in Model[index].Tags)
            {
                <option value="@tag.Id" selected="selected">@tag.Name</option>
            }
        </select>
    </div>
}
...

我做了什么:在视图中添加了一个select,给它一个类,以后我可以用javascript访问它。如果需要添加多个值,可以在我的模型中添加multiple="multiple"我添加了已经分配给模型的标记。它们不是用select2自动添加的,你需要自己添加。如果您没有启用多个,那么您的Tags可能只有一个Tag,您不需要枚举。

代码语言:javascript
复制
$(document).ready(function() {
    $('.js-example-basic-multiple').select2({
    ajax: {
            url: '/Tag/GetTags',
            dataType: 'json',
            type: "GET",
            quietMillis: 50,
            data: function (term) {
                return {
                    term: term
                };
            },
            processResults: function (data) {
                return {
                    results: $.map(data, function (item) {
                        return {
                            text: item.name,
                            id: item.id
                        }
                    })
                };
            }
        }
    });
});

在此脚本中,当文档完全加载时,我以select2身份运行select,只需使用$('.js-example-basic-multiple').select2()。我想让select2通过ajax (因此是ajax属性)加载选项--如果你不想使用ajax,你可以像在视图中只用<option value="@tag.Id">@tag.Name</option>一样添加可能的值。

在我的控制器(应用程序中的ImageController.cs)中,我刚刚为ajax-request添加了一个函数:

代码语言:javascript
复制
public async Task<JsonResult> Tags(int id)
{
    return Json(await _imageService.Get(id));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45789448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档