从ViewBag中的值设置Html.DropDownList中的选定值

时间:2017-01-10 00:17:42

标签: asp.net-mvc drop-down-menu

我有一个名为SkillLevelViewModel的视图模型,它包含两个属性,Id和值。根据我传入的organizationId,我返回这些Id和值的SelectList。我能够在我的视图中看到一个选择列表迭代组织匹配的次数,但是,我无法动态地在每个下拉列表中设置所选项目。

假设数据看起来像这样

SkillLevel table

如果我在控制器中添加一个整数值作为最后一个参数,我将在视图中看到该项被选中,但我正在努力获取从数据库返回的每一行的值;我尝试使用data.SkillLevelId但收到此错误:'List'不包含'SkillLevelId'的定义

- 这可行,但不是动态的

ViewBag.SkillLevelList = new SelectList(data, "SkillLevelId", "SkillLevel", 2); 

ViewModel

public class SkillLevelViewModel
{
    public int SkillLevelId { get; set; }
    public string SkillLevel { get; set; }
}

查看

@Html.DropDownList("skillLevel", (SelectList)ViewBag.SkillLevelList)

控制器

var data = GetSkillLevels(userInfo.OrganizationId);

ViewBag.SkillLevelList = new SelectList(data, "SkillLevelId", "SkillLevel", SET SELECTED VALUE OF EACH DROP DOWN WITH SkillLevelId);

public List<SkillLevelViewModel> GetSkillLevels(int organizationId)
{
    var skillLevels = new List<SkillLevelViewModel>();

    using (Entity db = new Entity())
    {
        var data = from sl in db.SkillLevels
                   where sl.Organization_ID == organizationId
                   select new SkillLevelViewModel()
                   {
                       SkillLevelId = sl.SkillLevel_ID,
                       SkillLevel = sl.SkillLevel1
                   };

            foreach(var item in data)
            {
                skillLevels.Add(item);
            }
        }

        return skillLevels;
    }
}

0 个答案:

没有答案