1、MultiSelectList多选问题。
在控制器中生成MultiSelectList,如:
var m = container.FlowNode.Where(f => f.FlowNode_ID == ID).FirstOrDefault(); List<FormDataItemMapping> listFDIM =m.FlowTable.FormTemplate.FormDataItemMapping.ToList(); ViewBag.userTablesSL=new MultiSelectList(listFDIM, "FormDataItemMapping_ID", "FormDataItemMapping_Title", m.FormDataItemMapping.ToList());
在前台进行绑定,如:
@Html.ListBox("usertable2222", (MultiSelectList)ViewBag.userTablesSL)
前台无法进行多选,查了很多资料都没有查看原因。最后只得自己封装方法生成IEnumerable<SelectListItem>对象,在前台绑定。
@Html.ListBox("usertable2222", (IEnumerable<SelectListItem>)ViewBag.userTablesSL)
2、MultiSelectList多选int型会出现无法多选的情况。
后台:
var a1 = new List<int>(); a1.Add(1); a1.Add(2); a1.Add(3); ViewBag.a1 = a1; var a2 = new List<int>(); a2.Add(2); a2.Add(3); ViewBag.a2 = a2; ViewBag.ssss= new MultiSelectList(a1,a1);
前台:
@Html.ListBox("xxx", (MultiSelectList)(ViewBag.ssss))
此种情况,无select未多选,若上面的a1是string类型,则就没有问题
@Html.ListBox("aaa", new MultiSelectList((List<SelectListItem>)ViewBag.s1, (List<string>)ViewBag.s1))
3、前台HtmlHepler标签与后台的ViewBag或ViewData的名称、实体名有重复的,很可能出现select无法多选的问题。
后台:
List<UserTable> usertablessss1 = (from ao in container.UserTable select ao).ToList();
ViewBag.usertablessss = GenerateMutiSelectList(usertablessss1, "UserTable_ID", "UserTable_Name", m.UserTable.ToList());
ViewData["usertablessss2"] = GenerateMutiSelectList(usertablessss1, "UserTable_ID", "UserTable_Name", m.UserTable.ToList());
前台: @Html.ListBox("usertablessss4", (IEnumerable<SelectListItem>)ViewBag.usertablessss)
@Html.ListBox("usertablessss3", (IEnumerable<SelectListItem>)ViewData["usertablessss2"]
@Html.ListBox("usertablessss1", (IEnumerable<SelectListItem>)ViewData["usertablessss2"])
@Html.ListBox("usertablessss2", (IEnumerable<SelectListItem>)ViewData["usertablessss2"]) 此种情况下就会出现无法多选的情况。
浙公网安备 33010602011771号