Почему вы используете ViewData вместо моделей представления и строго типизированных представлений, которые сделают ваш код намного более понятным / более безопасным / с поддержкой Intellisense, ...? Почему вы используете словари вместо более простых типов? Как например вид модели:
public class MyViewModel
{
public string SelectedState { get; set; }
public IEnumerable<SelectListItem> States { get; set; }
}
и контроллер:
public ActionResult Foo()
{
var states = new States().GetStates();
var model = new MyViewModel
{
States = states.Select(x => new SelectListItem
{
Value = x.Key,
Text = x.Value
})
};
return View(model);
}
и строго типизированное представление:
<%= Html.DropDownList(
x => x.SelectedState,
new SelectList(Model.States, "Value", "Text"),
null,
new { @class = "ddlAttributeGroups" }
) %>
Видите, как это просто?