Html.DropDownList selected value not working using ViewBag
asp.net-mvc-3, html-select, razor, selectedvalue
Solution
The problem may also be the name, see here.
In the Controller
ViewBag.PersonList= new SelectList(db.Person, "Id", "Name", p.PersonId);
In the View
@Html.DropDownList("PersonList",(SelectList)ViewBag.PersonList )
This will not work, you have to change the name, so it's not the same.
@Html.DropDownList("PersonList123",(SelectList)ViewBag.PersonList )
So change yearDropDown and it Will Work for you.
Best regards Christian Lyck.
Problem
Well, after a couple hours reading stuff over here, trying unsuccessfully all the solutions, also found this article that i thought it would save my life... nothing. Long story short. Here is my View (all combinations) ``` @Html.DropDownList("yearDropDown",(IEnumerable<SelectListItem>)ViewBag.yearDropDown) @Html.DropDownList("yearDropDownxxx",(IEnumerable<SelectListItem>)ViewBag.yearDropDown) @Html.DropDownList("yearDropDown",(<SelectList>)ViewBag.yearDropDown) @Html.DropDownList("yearDropDown") ``` Here is my Controller ``` public ActionResult(int year) { var years = new int[] { 2007, 2008, 2009, 2010, 2011, 2012 } .Select(x => new SelectListItem { Text = x.ToString(), Value = x.ToString(), Selected=x==year }).Distinct().ToList(); years.Insert(0, new SelectListItem { Value = null, Text = "ALL YEARS" }); ViewBag.yearDropDown = new SelectList(years, "Value", "Text", years.Where(x => x.Selected).FirstOrDefault()); return View(); } ``` Here is my rendered HTML. Selected nowhere to be found. ``` <select id="yearDropDown" name="yearDropDown"><option value="">ALL YEARS</option> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option> </select> ``` Needless to mention, but i will, i checked in my Watch and SelectList actually has SelectedValue property populated with the selected year passed to the controller. But when i renders at the view, it goes to the first option. Please, I need the solution for `DropDownList`, NOT for `DropDownListFor`. I am highlighting this because i saw other people here asking for the same help and bunch of people gave them instructions, and almost order them, to use DropDownListFor. There is a reason why i NEED to use DropDownList. SOLUTION: Look at my own answer. However, here are the simple changes i made. Controller: ``` ViewBag.yearDropDown = years; ``` View: ``` @Html.DropDownList("yearDropDown") ```