使用 Select2 jquery 进行多选的 ASP MVC 下拉列表

Posted

技术标签:

【中文标题】使用 Select2 jquery 进行多选的 ASP MVC 下拉列表【英文标题】:ASP MVC Dropdown list with Multiple Select using Select2 jquery 【发布时间】:2018-01-02 21:10:27 【问题描述】:

我有一个控件,它需要有多个选择选项来创建令牌。每当创建或删除令牌时都会生成数据库调用。现在的问题是,当我从服务器加载新页面时,控件中没有令牌。以下是我的 Razor 代码:

@html.DropDownList("ProjectIds", new MultiSelectList(projDDL.Items, "key", "value",Model.SelectedProject), new @class = "form-control selectorBind", multiple = "multiple",@id= "myid" data_rowid = "ID", data_type="Project",data_myattr= "attr" )

projDDL 是一个包含下拉列表项的字典

SelectedProject 也是包含选定项目键、值的字典

我曾尝试关注此链接MVC DropDown list with MultipleSelect,但没有成功。

从服务器端加载令牌是我的问题。虽然我知道我可以从 Jquery 轻松完成,但我想使用 Razor。

解决方案 查看@Html.DropDownListFor@Html.ListBoxFor

@Html.ListBoxFor(y => y.SelectedProjects, new MultiSelectList(projDDL.Items, "key", "value", Model.SelectedProjects), new  @class = "form-control selectorBind", multiple = "multiple", @id = @Model.SkillType+"Project_" + Model.ID, data_rowid = @Model.ID, data_type = "Project", data_myattr = "FK_ProjectID" )

【问题讨论】:

使用ListBoxFor() 而不是DropDownListFor() 来生成多选。 SelectedProjects 需要是简单值的集合(与您的选项的值匹配)而不是 Dictionary 另请参阅this answer。并且您的模型是否包含名为 ProjectIds i 的属性,如果是,那么您的 Model.SelectedProject 参数将被忽略 - 它的 ProjectIds 的值决定了哪些选项被选中 我想要this 之类的东西。 ListBoxFor() 不是我想要的。如果您希望我为SelectedProjects 使用集合,而不是用于构建下拉菜单的预定义项目,它们也应该是集合吗? 是的!阅读链接以解释原因。它对外观没有影响-(它们生成相同的 html)-您应用 jquery 插件 答案信息量大,空气清新。感谢您的时间和关注。 【参考方案1】:

查看@Html.DropDownListFor@Html.ListBoxFor 之间的区别以及何时使用什么

@Html.ListBoxFor(y => y.SelectedProjects, new MultiSelectList(projDDL.Items, "key", "value", Model.SelectedProjects), new  @class = "form-control selectorBind", multiple = "multiple", @id = @Model.SkillType+"Project_" + Model.ID, data_rowid = @Model.ID, data_type = "Project", data_myattr = "FK_ProjectID" )

【讨论】:

以上是关于使用 Select2 jquery 进行多选的 ASP MVC 下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

带多选的 Select2 下拉菜单

求jquery版的多选树形下拉框的插件(Multiple ComboTree)?

markdown 带有select2多选的Wordpress / Woocommerce自定义字段

jsp jquery select2多选不换行

使用 jQuery 的 select2 向多选添加值

使用 jquery 用新数据覆盖现有的 select2 多选下拉列表