1

在我看来,我使用一个列表作为我的模型,每个列表项都是模型类型,所以它看起来像这样:

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

但是当我这样做时,它不会在我的页面上呈现下拉菜单。

我在当地人名单中的图片

有人可以帮忙吗?

4

1 回答 1

2

您无法为模型呈现下拉列表,因为无法在下拉列表中完整地表示模型。ASP.NET 应该呈现什么?

如果您想从列表中选择一个模型,您可以做的是在列表上运行 LINQSelect查询,从而创建IEnumerable<SelectListItem>这样的:

var selectList = Model
    .Select(x => new SelectListItem
    {
        Name = x.module_name,
        Value = x.module
    });

我试图从您发布的屏幕截图中获取值。抱歉,如果我犯了错误。你明白了……

这段代码的作用是遍历对象类型 ( Model.Select) 的集合并返回SelectListItem. 如果您不熟悉 LINQ,则需要将其Select视为一种变革性功能。它接受一个集合,并为每个元素将其转换为其他内容并返回结果。在这里,它获取模型集合的每个元素并创建一个SelectListItem. 然后它返回一个IEnumerable<SelectListItem>.

要在页面上呈现列表,请执行以下操作:

@Html.DropDownListFor(Model.MyValue, selectList)

...其中 Model.MyValue 是接收所选值的变量(假设该值model是 a string,它看起来是)。

于 2012-11-30T11:57:29.897 回答