我在数据库中有一个表
我已经能够在我的视图中的下拉列表中显示TypeName列表
目前我这样做是我的控制器
[HttpGet]
public ActionResult CreateModule()
{
var moduleTypes = _db.ModuleTypes.Select(moduleType => moduleType.TypeName).ToList();
var model = new CreateModule
{
TypeNames = moduleTypes.Select(m => new SelectListItem
{
Value = m,
Text = m,
})
};
return View(model);
}
并在视野中
<div class ="input-block-level">@Html.DropDownListFor(model => model.SelectedModuleTypeName, Model.TypeNames)</div>
结果是这样的
根据我的代码,我将从控制器的post方法中的视图中获取TypeName
。
如何更改我的代码才能访问控制器中Id
的{{1}}?
答案 0 :(得分:2)
修改您的行动:
public ActionResult CreateModule()
{
var moduleTypes = _db.ModuleTypes.Select(moduleType => new { TypeName = moduleType.TypeName, Id = moduleType.Id }).ToList();
var model = new CreateModule
{
TypeNames = moduleTypes.Select(m => new SelectListItem
{
Value = m.Id.ToString(),
Text = m.TypeName,
})
};
return View(model);
}
答案 1 :(得分:1)
Select
多个项目而不是单个
var moduleTypes = _db.ModuleTypes
.Select(
moduleType => new {
Id = moduleType.Id
TypeName = moduleType.TypeName}
).ToList();
var model = new CreateModule
{
TypeNames = moduleTypes.Select(m => new SelectListItem
{
Value = m.Id.ToString(),
Text = m.TypeName,
})
};
第一个语句是使用linq
创建匿名对象,第二个语句是使用它来创建CreateModule