Set the selected item in dropdownlist in MVC3
asp.net-mvc-3, c#, html.dropdownlistfor, razor, selecteditem
Solution
First, create your ViewModel.
public class MovieViewModel
{
public string Genre { get; set; }
public IEnumerable<SelectListItem> GenreList
{
get
{
yield return new SelectListItem { Text = "Comedy", Value = "1" };
yield return new SelectListItem { Text = "Drama", Value = "2" };
yield return new SelectListItem { Text = "Documentary", Value = "3" };
}
}
}
Then, your controller creates a new instance of this ViewModel and sends it to the view.
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
var viewModel = new MovieViewModel
{
Genre = "2"
};
return View(viewModel);
}
}
Finally, the view displays the dropdownlist using the ASP.NET wrapper [Html.DropDownListFor()][1].
@model MvcApplication1.Models.MovieViewModel
<!DOCTYPE html>
<html>
<head>
<title>My movie</title>
</head>
<body>
<div>
@Html.DropDownListFor(m => m.Genre, Model.GenreList)
</div>
</body>
</html>
The selected value is then automatically chosen according the ViewModel. There's no need to manually set the Selected property of the objects SelectListitem.
Problem
I have to set the selected item for a dropdownlist in view. But its not working. //View ``` <div class="editor-label"> @Html.LabelFor(model => model.Gender) </div> <div class="editor-field"> @Html.DropDownListFor(model => model.Gender,Model.GenderList) </div> ``` //Model ``` [Required(ErrorMessage = "Please select gender!")] [Display(Name = "Gender")] public string Gender { get; set; } public IEnumerable<SelectListItem> GenderList { get { return new[] { new SelectListItem { Value = "0", Text = "Select" }, new SelectListItem { Value = "1", Text = "Male" }, new SelectListItem { Value = "2", Text = "Female" }, }; } } ``` The gender property has the value needs to be selected in the list. Still not working. Where i'm wrong?