Я применил аналогичный подход к вам, когда я строю SelectList в моей модели представления и ссылаюсь на него из своих представлений с помощью Html.DropDownList.
Одно большое отличие состоит в том, что я всегда устанавливаю свои значения / текстовые параметры в строковые значения, даже если соответствующие данные имеют тип int.
Пример (C # - извините):
private List<SelectListItem> widgets;
public List<SelectListItem> Widgets
{
get
{
if (widgets == null)
{
widgets = new List<SelectListItem>();
widgets.Add(new SelectListItem { Value = "10", Text = "10" });
widgets.Add(new SelectListItem { Value = "25", Text = "25" });
widgets.Add(new SelectListItem { Value = "50", Text = "50" });
widgets.Add(new SelectListItem { Value = "100", Text = "100" });
widgets.Add(new SelectListItem { Value = "500", Text = "500" });
}
return widgets;
}
private set { }
}
Еще одно отличие, хотя я сомневаюсь, что оно является причиной этой проблемы, заключается в том, что я строго ввожу свои представления в модель представления, а затем получаю доступ к свойству SelectList модели представления непосредственно из представления вместо назначения его для viewdata в контроллере. Похоже, что вы привязали свой взгляд непосредственно к сущности (то есть к модели домена).