2012-06-10 3 views
2

У меня есть DropDownList, который содержит правильные элементы и значения при визуализации представления, но выбранное значение не сохраняется в указанном поле объекта Garage. В настоящее время значение, которое сохраняется и возвращается, равно 0 (None) как для создания, так и для редактирования методов публикации. Я уверен, что это что-то простое, но я не могу понять это ... Спасибо заранее!Не удалось сохранить значения Enum в поле сущности из DropDownList - EF Code First MVC3

Модель Класс:

public enum GarageType { None = 0, One = 1, Two = 2, Three = 3, Four = 4 } 

public int Garage { get; set; } 

[NotMapped] 
public GarageType GarageEnumValue 
{ 
    get { return (GarageType)Garage; } 
    set{ Garage = (int)value; } 
} 

Контроль Создание и редактирование методов и выглядеть следующим образом:

var statuses = from Property.GarageType s in Enum.GetValues(typeof(Property.GarageType)) 
         select new { ID = (int)s, Name = s.ToString() }; 
ViewBag.GarageId = new SelectList(statuses, "ID", "Name", statuses.FirstOrDefault().ID); 

Последний представления:

@Html.DropDownList("GarageId", String.Empty) 

ответ

2

Используйте следующую перегрузку DropDownList метод

@Html.DropDownList("GarageEnumValue", (SelectList)ViewBag.GarageId, String.Empty) 

Если у вас есть сильно тип модели использовать

@Html.DropDownListFor(m => m.GarageEnumValue, (SelectList)ViewBag.GarageId, String.Empty) 

Первый аргумент в обоих случаях должно быть свойство, что вы собираетесь связать список.

+0

Это исправило мою проблему с созданием и теперь правильное значение сохраняется в поле таблицы Garage. Когда я пытаюсь отредактировать эту же запись, DropDownList не заполняется с тем же выбранным значением, когда я создал запись. Значение возвращается к нулю. Я добавил эту строку как для создания, так и для редактирования методов @ Html.DropDownList («GarageEnumValue», (SelectList) ViewBag.GarageId, String.Empty) – Shawn

+2

Я нашел решение своего последнего вопроса, чтобы не использовать первый параметр строки GrageEnumValue, но вместо этого перейдите прямо к собственности Garage: @ Html.DropDownList («Garage», (SelectList) ViewBag.GarageId, String.Empty) Спасибо за помощь! ~ – Shawn

+0

Смотрите мой учебник DDL http://www.asp.net/mvc/ tutorials/javascript/work-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc и http://blogs.msdn.com/b/rickandy/archive/2012/ 01/09/cascasding-dropdownlist-in-asp-net-mvc.aspx – RickAndMSFT