不完全的。你不能调用方法DropDownList
像那样。
首先,将该项目集合放入您的ViewBag
:
using (var dc = new CompanyListIdDBContext())
{
var content = from p in db.Companies
select new { p.CoId, p.CompanyName };
ViewBag.CompaniesList = content
.Select(c => new SelectListItem
{
Text = c.CompanyName,
Value = c.CoId.ToString()
}).ToList();
}
确保在返回视图之前在操作结果中调用该函数。
最后,只需使用您的模型属性并切换到DropDownListFor
:
@Html.DropDownListFor(m => m.Id, ViewBag.CompaniesList);
然而更好的方法,就是不使用ViewBag
并使用视图模型代替。像这样的东西:
public class CompanyViewModel
{
public int Id { get; set; }
public string CompanyName { get; set; }
public List<SelectListItem> CompaniesList { get; set; }
}
那么你的操作方法将是这样的:
public ActionResult YourAction()
{
var model = new CompanyViewModel();
using (var dc = new CompanyListIdDBContext())
{
var content = from p in db.Companies
select new { p.CoId, p.CompanyName };
model.CompaniesList = content
.Select(c => new SelectListItem
{
Text = c.CompanyName,
Value = c.CoId.ToString()
}).ToList();
}
return View(model);
}
然后你的视图将使用新模型:
@model CompanyViewModel
那么你的下拉菜单将是:
@Html.DropDownListFor(m => m.Id, Model.CompaniesList)