【发布时间】:2020-04-08 13:13:50
【问题描述】:
我正在尝试创建多选 DropDownList,它应该从数据库中加载数据。第一次运行时应选择所有字段。我想发回控制器参数List<string> selectedStatus,在那里做一些逻辑,然后通过ViewData["Status"] 发回视图。基于这个参数我想填充多选DropDownList...我正在使用jQuery select2。
第一次运行时,DropDownList 中没有任何内容被选中。
当我选择多个选项并发送到控制器时,第一个值只会出现在 DropDownList 中。
我有 Index 方法,代码如下
var status = new List<SelectListItem>();
if (!selectedStatus.Any())
{
status = (from t in _context.Status
select new SelectListItem()
{
Text = t.Status,
Value = t.StatusId.ToString(),
Selected = true
}).OrderBy(t => t.Text)
.ToList();
}
else
{
status = (from t in _context.Status
select new SelectListItem()
{
Text = t.Status,
Value = t.StatusId.ToString(),
Selected = false
}).OrderBy(t => t.Text)
.ToList();
foreach (var item in status)
{
if (selectedStatus.Any(s => s.Contains(item.Value)) == true)
{
item.Selected = true;
}
}
}
ViewData["Status"] = status;
在索引视图中
<form asp-controller="Home" asp-action="Index" method="get">
<div class="input-group">
@Html.DropDownList("selectedStatus", new SelectList((IEnumerable<SelectListItem>)ViewData["Status"], "Value", "Text"), htmlAttributes: new { @class = "form-control", multiple = "multiple", id = "select" })
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="submit">Submit</button>
<a asp-action="Index" class="btn btn-outline-secondary">Cancel</a>
</div>
</div>
</form>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");
<script>
$('select').select2({
theme: 'bootstrap4',
multiple: true,
});
</script>
}
}
我做错了什么?那里缺少什么?
谢谢。
【问题讨论】:
-
使用这个链接:forums.asp.net/t/…
标签: c# asp.net-mvc asp.net-core