8

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

鉴于我已经写了这个

@Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby"))

但我收到一个错误

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

请帮助如何绑定。

4

3 回答 3

7

试试看

@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; }

所以你的视图模型一定有问题,所以你最好发布你的视图模型进行检查

于 2012-04-05T13:00:28.743 回答
5

@贾特拉帕蒂·夏尔马,

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

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

于 2013-01-14T10:02:11.060 回答
3
@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" }) 

表达式中的 HobbyId 必须是可枚举的,因为您设置了多选

于 2012-04-05T13:51:26.130 回答