使用所选项目预填充ListBox / MultiSelectList

时间:2017-04-25 20:00:34

标签: asp.net-mvc

有没有办法预先填充MultiSelectList所选项?

实施例: 我有一个具有以下ListBoxFor的视图,该视图会导致页面通过允许过滤Model.Companies来更新显示的内容。

  @Html.ListBoxFor(m => m.SelectedCompanies, new MultiSelectList(Model.Companies, "IdString", "CompanyName")

我想要发生的是更新后,MultiSelectList将包含在页面更新和刷新之前选择的项目。这是否意味着我需要使用所选内容返回SelectedCompanies,还是有其他方法?

我在客户端使用javascript library Chosen来获取ListBox的可用性,但我不认为这会影响我正在尝试做的事情。

1 个答案:

答案 0 :(得分:1)

有时,JS库可能会干扰您想要的结果。我不能代表Chosen JS库,但检查标记并查看它是如何呈现的。只要它仍然在客户端上有列表框(它必须在某处定义一些输入元素;我猜它会隐藏它并在选择时更新值),然后是的它应该整合好。

但是,当控制器回发时,您必须使用从POST操作返回到控制器的任何值重新填充Model.SelectedCompanies属性。如果从POST操作返回View,则该属性仍应具有所选公司。如果您使用的是RedirectToAction,则必须将选择存储在TempData中。