我的视图中有许多Html.Listbox控件,这些控件由IEnumberable<SelectListItem>
填充
是否有一种方法可以在填充数据时自动选择某些项目?
IEnumerable中的特定选择列表项标记为Selected = true,但这不会传达到视图中。
观点如下:
<%= Html.ListBox("projects", Model.Projects)%>
感谢。
答案 0 :(得分:10)
一如既往,您首先要定义一个视图模型,该模型将代表您希望在特定视图上显示的信息:
public class MyViewModel
{
public string[] SelectedItems { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
然后是控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
SelectedItems = new[] { "1", "3" },
Items = new[]
{
new SelectListItem { Value = "1", Text = "Item 1" },
new SelectListItem { Value = "2", Text = "Item 2" },
new SelectListItem { Value = "3", Text = "Item 3" },
}
};
return View(model);
}
}
最后在你的强类型视图中:
<%= Html.ListBoxFor(
x => x.SelectedItems,
new SelectList(Model.Items, "Value", "Text")
) %>
正如预期的那样项目1 和项目3 将在呈现列表框时被预先选择。