如何在Mvc3中填充ListBoxFor?

Rac*_*hit 8 asp.net-mvc-3 html.listboxfor

我有一个类型存储过程列表,其中包含ID和Name作为数据.我在模型中具有int类型的属性和相同存储过程的列表.现在我想将这些信息绑定到ListBoxFor

在视图中我写了这个

@Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby"))
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误

当允许多个选择时,参数'expression'必须求值为IEnumerable.

请帮助如何绑定.

Aza*_*rum 7

试试看

@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" }) 
Run Code Online (Sandbox Code Playgroud)

listHobby是我样本上的iEnumerable列表


抱歉,如果我误导你,赶紧回答,但是你无法将多选列表框的结果变成guid或int变量(你的HoobyId是什么类型)你应该有一个数组来抓取结果像

public string[] SelectedHobbyIds { get; set; }
Run Code Online (Sandbox Code Playgroud)

所以你的视图模型肯定有问题所以你发布你的视图模型要更好


Rif*_*faj 5

@ Chhatrapati Sharma,

在您的控制器中,试试这个,

ViewData['anyName'] = new SelectList {
 Text = ,  // text from ur function
 Value = , // Value from function
 Selected = // if required
}
Run Code Online (Sandbox Code Playgroud)

并在视图中,绑定视图数据,如,

 <@Html.ListBox("docImages", ((IEnumerable<SelectListItem>)ViewData["anyName"]))
Run Code Online (Sandbox Code Playgroud)

如需测试,请尝试以下样本选择列表项,

ViewData['anyName'] = new List<SelectListItem>{ 
                new SelectListItem {Text = "First", Value = "0"}, 
                new SelectListItem {Text = "Second"), Value = "1"}, 
                new SelectListItem {Text = "Third", Value = "2"} 
                    };
Run Code Online (Sandbox Code Playgroud)

如果此示例有效,请检查您的函数"_supp.listDocImages()"并确保它返回IList