MVC下拉列表:根据数据库中的表设置值和文本

时间:2013-06-25 10:50:54

标签: asp.net-mvc asp.net-mvc-4 html-select html.dropdownlistfor

我在数据库中有一个表

enter image description here

我已经能够在我的视图中的下拉列表中显示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>

结果是这样的 enter image description here

根据我的代码,我将从控制器的post方法中的视图中获取TypeName。 如何更改我的代码才能访问控制器中Id的{​​{1}}?

2 个答案:

答案 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