在我的视图中,我使用列表作为我的模型,每个列表项都是model类型,所以它看起来像这样:
@model IEnumerable<UserManager.Models.vw_UserManager_Model>
我试图遍历此列表并将特定属性添加到DropDownListFor:
@for (int i = 0; i < Model.Count(); i++)
{
Html.DropDownListFor(model => model.ElementAt(i).module, new SelectList(Model, Model.ElementAt(i).module));
}
但是当我这样做时,它不会在我的页面上呈现下拉菜单。
有人可以帮忙吗?
答案 0 :(得分:2)
您无法呈现模型的下拉列表,因为无法在下拉列表中完整地表示模型。 ASP.NET应该呈现什么?
如果要从列表中选择模型,可以执行的操作是在列表上运行LINQ Select
查询,从而创建IEnumerable<SelectListItem>
,如下所示:
var selectList = Model
.Select(x => new SelectListItem
{
Name = x.module_name,
Value = x.module
});
我尝试从您发布的屏幕截图中获取值。如果我犯了错误,请道歉。你明白了......
此代码的作用是遍历对象类型(Model.Select
)的集合,并返回SelectListItem
的集合。如果您不熟悉LINQ,则需要将Select
视为变革函数。它需要一个集合,并为每个元素将其转换为其他元素并返回结果。在这里,它采用Model集合的每个元素并创建SelectListItem
。然后它返回IEnumerable<SelectListItem>
。
要在页面上呈现列表,请执行以下操作:
@Html.DropDownListFor(Model.MyValue, selectList)
...其中Model.MyValue是接收所选值的变量(假设值model
是string
,它似乎是)。