3

我在数据库中有一个表

在此处输入图像描述

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

结果是这样的 在此处输入图像描述

根据我的代码,我将从TypeName控制器的 post 方法中的视图中获取。Id我如何更改我的代码以访问TypeNamein 控制器?

4

2 回答 2

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

        }
于 2013-06-25T11:00:02.430 回答
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

于 2013-06-25T11:00:23.433 回答