gpt4 book ai didi

asp.net-mvc - ListBoxFor MultiSelectList 不选择值

转载 作者:行者123 更新时间:2023-12-01 19:54:11 25 4
gpt4 key购买 nike

我非常困惑,因为这看起来应该很简单,但我无法让我的 ListBox 填充选定的值。我查看了其他几个答案,但我不知道我做错了什么。

这是我的模型:

public class ItemViewModel
{
public IEnumerable<Item> AllItems { get; set; }
public IEnumerable<Item> SelectedItems { get; set; }
}

public class Item
{
public string Id { get; set; }
public string Name { get; set; }
}

这是我的 Controller 操作:

public ActionResult ListBoxTest()
{
var viewModel = new ItemViewModel()
{
AllItems = new List<Item>()
{
new Item()
{
Id = "1",
Name = "Name1"
},
new Item()
{
Id = "2",
Name = "Name2"
}
},
SelectedItems = new List<Item>()
{
new Item()
{
Id = "1",
Name = "Name1"
}
}
};
return this.View(viewModel);
}

这是我 View 中的行(使用默认的 MVC View 模板):

@Html.ListBoxFor(m => m.SelectedItems, new MultiSelectList(Model.AllItems, "Id", "Name", Model.SelectedItems.Select(s => s.Id)), new { multiple = "multiple"})

我还尝试忽略所选值:

@Html.ListBoxFor(m => m.SelectedItems, new MultiSelectList(Model.AllItems, "Id", "Name"), new { multiple = "multiple"})

并将选定的值制作为列表:

@Html.ListBoxFor(m => m.SelectedItems, new MultiSelectList(Model.AllItems, "Id", "Name", Model.SelectedItems.Select(s => s.Id).ToList()), new { multiple = "multiple"})

但无论我做什么,列表项都不会被选中。我做错了什么?

最佳答案

您无法绑定(bind) <select>元素到复杂对象的集合。多重选择仅回发一组简单值 - 所选选项的值。

您的模型需要是

public class ItemViewModel
{
public IEnumerable<Item> AllItems { get; set; }
public IEnumerable<int> SelectedItems { get; set; }
}

在 Controller 中

SelectedItems = new List<int>(){ 1 }

然后使用

@Html.ListBoxFor(m => m.SelectedItems, new SelectList(Model.AllItems, "Id", "Name")

将选择下拉列表中的第一个选项。

请注意 ListBoxFor()方法集multiple="multiple"所以不需要再次设置。另外,设置SelectList()中的最后一个参数(或 MultiSelectList() )构造函数毫无意义。它是您绑定(bind)到的属性的值,该值决定了选择的内容,并且内部是 ListBoxFor()方法忽略该参数。

我还建议您的属性(property)应该是

public IEnumerable<SelectListItem> AllItems { get; set; }

这样你就可以简单地使用

@Html.ListBoxFor(m => m.SelectedItems, Model.AllItems)

关于asp.net-mvc - ListBoxFor MultiSelectList 不选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42126367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com