Asp.net mvc 3 如何在Mvc3中填充ListBoxFor?

Asp.net mvc 3 如何在Mvc3中填充ListBoxFor?,asp.net-mvc-3,html.listboxfor,Asp.net Mvc 3,Html.listboxfor,我有一个类型存储过程列表,其中有一个ID和一个名称作为数据。 我在模型中有int类型的属性和同一存储过程的列表。 现在我想将此信息绑定到ListBoxFor中 鉴于此,我写了这篇文章 @Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby")) 但是我犯了个错误 当允许多选时,参数“expression”的计算结果必须为IEnumerable 请帮助我如何绑定。试试

我有一个类型存储过程列表,其中有一个ID和一个名称作为数据。 我在模型中有int类型的属性和同一存储过程的列表。 现在我想将此信息绑定到ListBoxFor中

鉴于此,我写了这篇文章

@Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby"))
但是我犯了个错误

当允许多选时,参数“expression”的计算结果必须为IEnumerable

请帮助我如何绑定。

试试看

@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" }) 
listHobby是我样本中的一个可数列表


抱歉,如果我误导了您,请立即回答,但是您无法将multiselect listbox的结果放入guid或int变量(无论您的HoobyId是什么类型),您应该有一个数组来获取结果,如下所示

public string[] SelectedHobbyIds { get; set; }
所以你的视图模型肯定有问题,所以你最好把你的视图模型贴出来检查一下

@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" }) 
表达式中的HobbyId必须是ienumerable,因为您设置了multi-select

在控制器中,尝试以下操作:

ViewData['anyName'] = new SelectList {
 Text = ,  // text from ur function
 Value = , // Value from function
 Selected = // if required
}
在view中,绑定viewdata,如下所示:

 <@Html.ListBox("docImages", ((IEnumerable<SelectListItem>)ViewData["anyName"]))

请同时发布模型。listHobby是什么类型的?。如何设置它的值?是的,我知道了,我正在返回hobby id中的值,它是int,而我必须在集合中返回。它对我不起作用//控制器公共操作结果AddEditSupplier(int id){clsSupplier _supp=new clsSupplier();_supp.lstDocImgs=\u supp.listDocImages()//它工作正常supp.lstDocFiles=supp.listDocFiles();//它工作正常返回视图(supp)}//视图但在视图中这两个都不工作@Html.ListBoxFor(x=>x.DocumentId,new selectList(Model.lstDocImgs,“docid”,“title”)@Html.ListBoxFor(x=>x.DocumentId,Model.lstDocImgs.Select(f=>new SelectListItem{Text=f.Title,Value=f.documentid.ToString()}),新的{Multiple=“Multiple”})
ViewData['anyName'] = new List<SelectListItem>{ 
                new SelectListItem {Text = "First", Value = "0"}, 
                new SelectListItem {Text = "Second"), Value = "1"}, 
                new SelectListItem {Text = "Third", Value = "2"} 
                    };