列表框中多个默认选择项

本文关键字:默认 选择 列表 | 更新日期: 2023-09-27 18:14:03

我正在考虑为具有多个类别(在列表中预定义)的Company对象创建Edit页面。我有通过ViewBag发送的列表,并有用户在创建页面中选择的类别在数组中,这要归功于ViewModel。

我无法找出一种方法来让ListBox预先填充我的数组中的多个值。我正在使用jQuery并能够获得一个要选择的值,但是当我尝试多个值时,什么也没有显示。什么好主意吗?

@Html.ListBox("Category", new SelectList(ViewBag.Category, "Text", "Value"))

列表框中多个默认选择项

SelectListItem对象有一个Selected属性来表示这一点。所以我想这取决于你如何构建SelectList。当前你这样做:

new SelectList(ViewBag.Category, "Text", "Value")

可以工作,但是不能控制单个SelectListItem。您可以使用相同的方法重载构建IEnumerable<SelectListItem>,而不是构建SelectList。最初可能看起来像这样:

ViewBag.Category.Select(c => new SelectListItem
{
    Text = c.Text,
    Value = c.Value
});

此时,您可以更好地控制各个项目。现在的问题是决定应该选择哪些。你是怎么确定的?它是Category对象上的属性吗?像这样的?:

ViewBag.Category.Select(c => new SelectListItem
{
    Text = c.Text,
    Value = c.Value,
    Selected = c.Selected
});

或者其他条件?:

ViewBag.Category.Select(c => new SelectListItem
{
    Text = c.Text,
    Value = c.Value,
    Selected = c.SomeValue == SomeCondition
});

如何决定取决于您,理想情况下,您可以在逻辑上添加到这里使用的后备模型中。