Asp.net mvc 4 如何在编辑时预先填充选定的MultiHelp下拉列表
我在我的示例项目中使用的是选中的多选下拉列表Asp.net mvc 4 如何在编辑时预先填充选定的MultiHelp下拉列表,asp.net-mvc-4,multi-select,jquery-chosen,Asp.net Mvc 4,Multi Select,Jquery Chosen,我在我的示例项目中使用的是选中的多选下拉列表 @Html.DropDownListFor(m => m.SelectedBranch, Model.BranchList, "Select", new { @class = "select-chosen form-control", @tabindex = "2", @id = "BranchId", @multiple = "multiple" }) 我的模型是 public string[] SelectedBranch { get;
@Html.DropDownListFor(m => m.SelectedBranch, Model.BranchList, "Select", new { @class = "select-chosen form-control", @tabindex = "2", @id = "BranchId", @multiple = "multiple" })
我的模型是
public string[] SelectedBranch { get; set; }
public IEnumerable<SelectListItem> BranchList { get; set; }
public string[]SelectedBranch{get;set;}
公共IEnumerable分支列表{get;set;}
我面临的问题是,在编辑已添加的数据时,我无法显示选定的值。我正在从数据库中获取所有选定的值
。请让我知道我要做什么来实现它。任何帮助都将不胜感激。谢谢您需要使用
ListBoxFor()
(并且不使用new{multiple=“multiple”}
)来生成绑定到您的模型的多重选择
@Html.ListBoxFor(m => m.SelectedBranch, Model.BranchList, "Select", new { @class = "select-chosen form-control", @tabindex = "2", @id = "BranchId" })
如果我的SelectedBranch是字符串而不是字符串数组,那么我可以执行sameNo。
ListBoxFor()
生成一个
,它回发一个值数组,因此属性必须是IEnumerable
。另一方面,如果您使用DropDownListFor()
(不添加new{multiple=“multiple”}
,那么它将绑定到一个string
属性,因为它只回发一个值作为旁注,因为这个问题,我添加了一个更详细的解释,解释了DropDownListFor()的原因
withnew{multiple=“multiple”}
不起作用。我的问题是,我将字符串作为模型,并且我将所有预选值作为逗号分隔的字符串。是否可能编辑数据,因此您应该始终使用特定于视图的视图模型,该视图模型可以包含属性IEnumerable SelectedBranch
,然后您可以使用String.Split()
映射到另一个方向。但是为什么要保存逗号分隔的字符串?这被认为是一种糟糕的做法-请参阅本网站上众多问答中的一个,解释为什么它不好。