如何解决预设SelectListItems在Bootstrap Multiselect中选择
在我的MVC项目中,我正在使用带有Bootstrap Multiselect的DropDownList。我有一个jquery onChange事件,该事件从列表中获取Selected Items,并将它们添加到文本框(链接到view属性)中,以存储在数据库字段中。控件配置如下:-
$('#SiteList').multiselect({
maxHeight: 400,enableCaseInsensitiveFiltering: true,includeSelectAllOption: true,onSelectAll: function () {
$('#siteNames').val("All Sites");
}
});
我正在使用jquery将DropDownList设置为Multiselect列表,如下所示:-
if (String.IsNullOrEmpty(postModel.siteNames) == false)
{
var sites = model.siteNames.Split(nl);
foreach (var s in sites)
{
var siteId = s.Split(':')[0];
var selected = postModel.siteList.Where(x => x.Value == siteId);
postModel.siteList.SetSelected(selected);
}
}
该位正常。站点在测试区中存储如下:-
1:网站1 2:站点2
等
在加载表单时,如果model.siteNames已经包含站点,则我想在控制器中选择这些站点,以便在呈现表单时已经选择它们。这就是我正在尝试的。
model.siteList = new MultiSelectList(siteList,"value","text",selectedSiteIDs);
在加载表单时,没有选择列表项。有什么想法我要去哪里吗?谢谢。
更新
我无法使用Orvar的解决方案,因此我尝试了另一种方法。看来我传递给模型的SelectList没有任何实际的选定项,因此代码是错误的。
我现在将列表的类型更改为MultiSelectList,并在控制器中按如下所示对其进行初始化:-
<div class="form-group">
@Html.LabelFor(model => model.siteNames,htmlAttributes: new { @class = "control-label col-md-4" })
@Html.ListBox("siteList",new SelectList(Model.siteList,"text"),new { htmlAttributes = new { @class = "form-control col-md-4",multiple = "multiple" } })
</div>
其中selectedIDs是我要选择的ID的列表,并且我已经验证了这次,selectedIDs中列出的项目已在siteList中设置为selected。
但是,在我看来,该控件仍然没有任何选定的项目。控件的代码现在看起来像这样:-
$price = min(array_column($product_array['products'][0]['offerData']['offers'],'price'));
难道是对multiselect的jquery调用(等同于引导)正在清除所选项目吗?
解决方法
尝试看看以下代码是否可以帮助您
@Html.ListBoxFor(model => model.SelectedValues,new MultiSelectList(Model.siteList.,"value","text",Model.SelectedValues),"Select Site",new { @class = "chzn-select form-control",multiple = "multiple" })
https://www.codeproject.com/Questions/1194907/Razor-mutliselect-dropdown-set-values-as-selected
此处是mvc中多项选择的好来源: https://www.mikesdotnetting.com/article/265/asp-net-mvc-dropdownlists-multiple-selection-and-enum-support
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。