Не удается установить выбранный элемент в Html.DropDownListFor, если существуют следующие условия:
1) Идентификатор выбранного элемента берется из перечисления (например, (int) AnimalType) и
2) Список заполняется из базы данных (или, фактически, из любого списка, кроме enum)
Например, в этом непроверенном псевдокоде DropDownList в представлении не будет выбран как собака Dog. Обратите внимание, что если я изменю перечисление на статический класс, который выдает значения типа int, у меня нет проблем. В операторе выбора Linq, если я пытаюсь привести a.AnimalType к (int) a.AnimalType, компилятор жалуется. Есть идеи?
Спасибо.
//--------------In the model
enum AnimalType
{
Dog = 1,
Cat = 2,
//etc.
}
public class Animal
{
public AnimalType AnimalId {get;set;}
public string Name {get;set;}
//etc.
}
public class AnimalModel
{
public AnimalId SelectedAnimal {get;set;}
public IEnumerable<SelectListItem> AllAnimals {get;set;}
}
//--------------In the controller
AnimalModel model = new AnimalModel();
model.SelectedAnimal = (AnimalType)1;
List<Animal> getAllAnimals = Repository.GetAllAnimals();//defined elsewhere
IEnumerable<SelectListItem> animalList =
from a in getAllAnimals
select new SelectListItem
{
Selected = (a.AnimalType == (int)model.SelectedAnimal),
Text = a.Name,
Value = a.AnimalId.ToString()
};
model.AllAnimals = animalList;
//--------------In the view
@Html.DropDownListFor(m => m.Id, Model.AllAnimals)