列表框中有多个默认选定项

时间:2014-07-22 15:54:17

标签: c# jquery asp.net-mvc

我正在研究为具有多个类别(在列表中预定义)的公司对象创建编辑页面。我将列表通过ViewBag发送,并且由于ViewModel而具有用户在数组的“创建”页面中选择的类别。

我无法找到一种方法让ListBox预填充数组中的多个值。我正在玩jQuery并且能够获得一个值被选中,但是当我尝试不止一个没有出现时。有什么想法吗?

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

1 个答案:

答案 0 :(得分:2)

SelectListItem对象具有Selected属性来指示这一点。所以我想这将归结为你如何构建SelectList。目前你这样做:

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

哪个有效,但无法控制个别SelectListItem。您可以构建SelectList using the same method overload,而不是构建IEnumerable<SelectListItem>。最初可能看起来像这样:

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
});

您如何确定这取决于您,理想情况下您可以逻辑地添加到此处使用的支持模型。