【问题标题】:MVC dropdownlist : Setting the value and text based upon table in databaseMVC 下拉列表:根据数据库中的表设置值和文本
【发布时间】:2013-06-25 10:50:53
【问题描述】:

我在数据库中有一个表

我已经能够在我的视图中的下拉列表中显示 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。 如何更改我的代码以访问控制器中 TypeNameId

【问题讨论】:

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


    【解决方案1】:

    修改您的操作:

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

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-30
        • 2017-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-03
        • 2021-05-19
        相关资源
        最近更新 更多