C# 如果返回到视图的模型是IEnumerable,是否可以填充DropDownList for

C# 如果返回到视图的模型是IEnumerable,是否可以填充DropDownList for,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,我显然错过了什么。 我认为填充DropDownListFor就像从控制器返回列表一样简单 在我的控制器中,我返回: public ActionResult ListCollege() { return View(db.Colleges.ToList()); } 在视图中,我将模型设置为: @model IEnumerable<CollegeApp.Models.DataModels.College> 但这显然不是填充Dro

我显然错过了什么。 我认为填充DropDownListFor就像从控制器返回列表一样简单

在我的控制器中,我返回:

public ActionResult ListCollege()
        {
            return View(db.Colleges.ToList());
        }
在视图中,我将模型设置为:

@model  IEnumerable<CollegeApp.Models.DataModels.College>
但这显然不是填充DropDownList for helper的正确方法

我已经读了一些书,但我不确定新的SelectList作为DropDownList中的第二个参数的作用,因为DropDownList的类型是IENumerable

我不太明白这个IENumberable是如何从模型/控制器传递到视图的

感谢

要有效地使用DropDownListFor helper方法,您需要使用视图模型的属性作为表达式参数传递,该参数将是lambda表达式。助手将使用与该属性名匹配的name和Id属性值构建SELECT元素。助手的第二个参数是SelectListItem的集合,它将用作构建下拉列表选项的源数据

因此,在您的示例中,创建一个视图模型,它有两个属性,一个用于集合,另一个用于选定值

public class CollageSelectionVm
{
   public IEnumerable<SelectListItem> Collages { set;get;}
   public int SelectedCollage { set;get;}
}
现在在视图中,它是视图模型的强类型,您将使用DropDownListFor帮助器


SelectedList是您需要搜索并学习如何使用的术语。您尚未显示您遇到的问题-创建DropDownList for。其余部分看起来不错,您的视图将收到模型中的列表。@Html.DropDownListFormodel=>model.FirstOrDefault.CollegeName。。。。这是我所知道的,但看起来不太对……快速搜索会给你结果。所以公共物品显然是我想要的。谢谢我相信微软的人都知道他们在做什么……但是设置dropdownlist看起来确实有点麻烦。
public ActionResult ListCollege()
{
    var vm = new CollageSelectionVm () ;
    vm.Collages = db.Collages
                    .Select(x=>new SelectListItem { Value = x.Id.ToString(),
                                                    Text=x.Name })
                    .ToList();
    return View(vm);
}
@model CollageSelectionVm

@Html.DropDownListFor(a => a.SelectedCollage , Model.Collages , "Select one")