【问题标题】:@html.DropDown ASP MVC and Select2 multiselect@html.DropDown ASP MVC 和 Select2 多选
【发布时间】:2017-01-13 19:26:44
【问题描述】:

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

@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>`

&lt;link href="/Content/bootstrap.min.css" rel="stylesheet"/&gt;

&lt;link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" /&gt; &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"&gt;&lt;/script&gt;

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

【问题讨论】:

  • 该代码应该可以工作。什么不工作?
  • 您的代码看起来完全正确。您确定您正确引用了 select2 库吗? &lt;select&gt; 元素的渲染标记是什么样的?可能是没有从属性中正确设置 ID。如果是这种情况,您需要使用$('#ValueId').select2();
  • 下拉列表已生成,但它不是带有搜索字段的多选控件和所有花哨的东西,而只是一个普通的列表框
  • 我在页面渲染后检查了代码,并且 id 和 class 设置正确
  • 您的开发者工具中是否有任何错误?是否正确加载了 select2 库?

标签: asp.net-mvc jquery-select2 jquery-select2-4


【解决方案1】:

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

  • 没有加载或引用 jQuery 库。
  • jQuery(或 select2)在被调用时还没有“准备好”。

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

<!-- 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

【讨论】:

  • 我的开发者控制台没有错误,我先调用 Jquery 然后调用 select2.js
  • 你已经把它包裹在文档就绪块中,类似于上面显示的示例?这也假设您的页面中没有任何其他 ID 为“dropDown”的元素对吗?
  • 我将它放在文档就绪块中,并且没有其他具有该 ID 的控件。
  • 其他一切看起来都正确。您的 元素并使用 select2.js 来定位它?仅用于测试目的。
  • 我试过了,它也没有加载那个......我想我的引导程序有问题
猜你喜欢
  • 2017-12-10
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多