如何在 Mvc3 中填充 ListBoxFor?
Posted
技术标签:
【中文标题】如何在 Mvc3 中填充 ListBoxFor?【英文标题】:How to Populate ListBoxFor in Mvc3? 【发布时间】:2012-04-19 05:01:46 【问题描述】:我有一个类型存储过程的列表,其中包含一个 ID 和一个名称作为数据。 我在模型中有 int 类型的属性和相同存储过程的列表。 现在我想将此信息绑定到 ListBoxFor
鉴于我已经写了这个
@html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby"))
但我遇到了错误
当允许多选时,参数“表达式”的计算结果必须为 IEnumerable。
请帮助如何绑定。
【问题讨论】:
请同时发布模型。 listHobby 是什么类型?你是如何给它设定值的?。 【参考方案1】:试试看
@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem Text = f.Hobby, Value = f.pkHobbyId.ToString() ), new Multiple = "multiple" )
listHobby 是我的示例中的 iEnumerable 列表
对不起,如果我误导了你,急忙回答,但你无法将多选列表框的结果放入 guid 或 int 变量(无论你的 HoobyId 是什么类型),你应该有一个数组来获取结果,例如
public string[] SelectedHobbyIds get; set;
所以你的视图模型一定有问题,所以你最好发布你的视图模型进行检查
【讨论】:
是的,我明白了,我返回爱好 id 中的值,它是 int,而我必须返回一个集合。【参考方案2】:@贾特拉帕蒂·夏尔马,
在你的控制器中,试试这个,
ViewData['anyName'] = new SelectList
Text = , // text from ur function
Value = , // Value from function
Selected = // if required
在视图中,绑定视图数据,
<@Html.ListBox("docImages", ((IEnumerable<SelectListItem>)ViewData["anyName"]))
为了测试,请尝试如下示例选择列表项,
ViewData['anyName'] = new List<SelectListItem>
new SelectListItem Text = "First", Value = "0",
new SelectListItem Text = "Second"), Value = "1",
new SelectListItem Text = "Third", Value = "2"
;
如果此示例有效,请检查您的函数“_supp.listDocImages()”并确保它返回 IList
【讨论】:
【参考方案3】:@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem Text = f.Hobby, Value = f.pkHobbyId.ToString() ), new Multiple = "multiple" )
表达式中的 HobbyId 必须是可枚举的,因为您设置了多选
【讨论】:
它对我不起作用 // 控制器 public ActionResult AddEditSupplier(int id) clsSupplier _supp = new clsSupplier(); _supp.lstDocImgs = _supp.listDocImages();// 工作正常 _supp.lstDocFiles = _supp.listDocFiles(); // 一切正常 return View(_supp); //查看但在视图中两者都不起作用 @Html.ListBoxFor(x => x.DocumentId, new selectList(Model.lstDocImgs, "documentid", "title")) @Html.ListBoxFor(x => x.DocumentId , Model.lstDocImgs.Select(f => new SelectListItem Text = f.Title, Value = f.documentid.ToString() ), new Multiple = "multiple" )以上是关于如何在 Mvc3 中填充 ListBoxFor?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Html.Listboxfor 和 Html.Beginform
将 ListBoxFor 绑定到 MVC 3 中的模型并使用另一个模型自动选择多个项目