I have a view model called SkillLevelViewModel which contains two properties, an Id and a value. Based on the organizationId I pass in I return a SelectList of these Id(s) and value(s). I am able to see a select list iterated in my view for the number of times the organization matches, however, I am not able to set the selected item in each of these drop downs dynamically.
Assume the data looks like this
IF I add an integer value as the last argument in my controller I will see that item selected in the view but what I am struggling with is getting the value for each row returned from the database; I tried using data.SkillLevelId but I receive this error: 'List' does not contain a definition for 'SkillLevelId'
-- THIS WORKS but is not dynamic
ViewBag.SkillLevelList = new SelectList(data, "SkillLevelId", "SkillLevel", 2);
ViewModel
public class SkillLevelViewModel
{
public int SkillLevelId { get; set; }
public string SkillLevel { get; set; }
}
View
@Html.DropDownList("skillLevel", (SelectList)ViewBag.SkillLevelList)
Controller
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;
}
}