【发布时间】:2021-05-11 19:25:44
【问题描述】:
在我的 ASP.NET Core (.NET5) 项目中,我使用 Bootstrap Duallistbox (bootstrap4-duallistbox@4.0.2)。在 Razor 页面中,我有一个包含 Departments 字段作为 List<Department> 的模型,在页面中,我编写了以下代码
<select id="Departments" asp-for="Departments" class="duallistbox"
multiple="multiple"
asp-items="ViewBag.DepartmentID">
</select>
<script>
$('.duallistbox').bootstrapDualListbox();
</script>
ViewBag 来自这个函数
private void PopulateDepartmentsDropDownList(object selectedDepartment = null)
{
var departmentsQuery = _department.ListAllQuerableAsync();
ViewBag.DepartmentID = new SelectList(departmentsQuery, "ID", "Name",
selectedDepartment);
}
如果我检查这个ViewBag,我可以看到SelectedValues 中有一些值。
结果是这 2 个列表框,但没有选择任何项目。
另外,如果我选择了一些项目并按下提交按钮,变量Departments 没有任何选定的值。
您有什么想法可以解决这个问题吗?
更新
我更改了函数PopulateDepartmentsDropDownList。
private void PopulateDepartmentsDropDownList(List<long> selectedDepartment = null)
{
var departmentsQuery = _department.ListAllQuerableAsync().ToList();
ViewBag.DepartmentID = new MultiSelectList(departmentsQuery, "ID", "Name",
selectedDepartment);
}
所以,现在我可以看到选定的项目了。
当我按下提交按钮时,选定的值不在模型中。为此,我添加了另一个列表框
<select id="Departments" asp-for="Departments"></select>
<script>
$('.duallistbox').bootstrapDualListbox();
$('#editButton').click(function () {
$("[id*=bootstrap-duallistbox-selected-list_] option").each(function () {
$('#Departments').append(
new Option($(this).text(), $(this).val(), true, true)
);
});
$("form").submit();
})
</script>
所以,现在单击提交时,我将所有选定的项目添加到新列表框中,但模型中不存在这些值。
有什么想法吗?
【问题讨论】:
标签: c# asp.net-core bootstrap-duallistbox