@html.DropDown ASP MVC 和 Select2 多选

@html.DropDown ASP MVC and Select2 multiselect

我有一个 @Html.DropDownList 添加到我的视图中,此下拉列表的数据在 ViewModel 中作为 属性 传递。如何将 Select2 Multiselect 插件添加到此下拉列表中。

@Html.DropDownList("ValueId", new SelectList(item.Values, "Id", "Name"), new { @class = "values js-example-basic-multiple", @multiple ="multiple", @id="dropDown"}) | @Html.ActionLink("Delete", "Delete", new { id=item.Id })`

JQuery:

$('#dropDown').select2();

页面呈现后:

 `<select class="values js-example-basic-multiple" data-val="true" data-val-number="The field ValueId must be a number." data-val-required="The ValueId field is required." id="dropDown" multiple="multiple" name="ValueId"><option value="4">M</option>

8 红色的 `

脚本:

`<script src="/Content/jquery-3.1.1.min.js"></script>`

<link href="/Content/bootstrap.min.css" rel="stylesheet"/>

<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>

更新:我发现了错误。我正在向我的页面添加一个新的 JQuery 实例,但我忘记了我的 shared_layout 页面已经添加了一个 JQuery 实例。

根据您提供的信息,确实有两种选择:

  • 未加载或引用 jQuery 库。
  • jQuery(或 select2)在被调用时 "ready"。

由于 select2 依赖于 jQuery,您必须确保引用它 并且 您将必要的代码放在 document-ready 块以确保您的依赖项在被调用之前准备就绪:

<!-- Your Example List here -->
@Html.DropDownList("Foo", new SelectList(ViewBag.List), new { multiple = "true", id = "dropDown"})

<!-- Example references (prior to closing </body> tag) -->
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
<script>
     $(function(){
          $('#dropDown').select2();
     });
</script>

你可以see a complete, and fully functional example using ASP.NET here.