ASP MVC Html.DropDownList with Values and Default Selection

ASP.NET MVC (Razor) has some great features and the Html Helpers take care of a lot of the coding for you. But sometimes I just want to do a simple dropdown, like:

<select>
<option value=”1″ selected=”selected”>1</option>
<option value=”2″>2</option>
<option value=”3″>3</option>
</select>

It’s nice to use a Helper; I can pass the selected value (or even a model) and it saves me messing about with bits of code. But the Html.DropDownList wants me to pass an IEnumerable<SelectListItem> for the values and sometimes when I am developing I just want to add ad-hoc values to the list and pass the default in the ViewBag. Here’s how to do it:

@Html.DropDownList("myvalues",
new SelectList(new[]
  {
    new SelectListItem { Text = "1", Value = "1" },
    new SelectListItem { Text = "2", Value = "2" },
    new SelectListItem { Text = "3", Value = "3" },
  }, "Value", "Text", ViewBag.myValue),
  new { @class = "myClass" })

In production apps it’s probably better not to use code like this in the View but it’s useful for a quick combo.