Вставка значения DropDownList в db

Я вставляю выбранное значение раскрывающегося списка в базу данных, но это дает мне ошибку в представлении, где находится помощник раскрывающегося списка. Нет элемента ViewData типа IEnumerable с ключом SpaceType. Модель:

        public class AddSpace
        {
             public string SpaceType { get; set; }
        }

Вид:

        @Html.DropDownListFor(m => m.SpaceType,  (IEnumerable<SelectListItem>)ViewData["property"])

Контроллер

    [HttpGet]
    public ActionResult AddSpace()
    {
        List<SelectListItem> items = new List<SelectListItem>();
        items.Add(new SelectListItem { Text = "Private Residence", Value = "Private Residence" });
        items.Add(new SelectListItem { Text = "Office", Value = "Office" });
        items.Add(new SelectListItem { Text = "Place of worship", Value = "Place of worship" });
        items.Add(new SelectListItem { Text = "Commercial Parking lot", Value = "Commercial Parking lot" });
        items.Add(new SelectListItem { Text = "Retail", Value = "Retail" });
        items.Add(new SelectListItem { Text = "Academic Institution", Value = "Academic Institution" });
        items.Add(new SelectListItem { Text = "Other", Value = "Other" });
        ViewData["property"] = items;

}

     [HttpPost]
     public ActionResult AddSpace(AddSpace adspace)
    {
        if (ModelState.IsValid)
        {
            string userName = "[email protected]";
            var query = from q in Session.Query<Registration>()
                        where q.Email == userName
                        select q;
            Session.Store(adspace);
                Session.SaveChanges();


        }

        else ModelState.AddModelError("","Please Correct the errors to continue");
        return View();
    }

person Wasfa    schedule 29.09.2013    source источник


Ответы (2)


Преобразовать в список:

  @Html.DropDownListFor(m => m.SpaceType, (List<SelectListItem>)ViewData["property"])
person Mister Epic    schedule 29.09.2013
comment
все еще та же ошибка. Нет элемента ViewData типа «IEnumerable ‹SelectListItem›» с ключом «SpaceType». - person Wasfa; 29.09.2013
comment
Для какой модели типизировано ваше представление? Вверху вы должны увидеть @model SomeModel - person Mister Epic; 29.09.2013
comment
Просмотр введен в модель AddSpace .. Мне что-то не хватает в методе HttpPost ?? - person Wasfa; 29.09.2013
comment
Ах, вам может потребоваться повторно заполнить ViewBag в вашем Post действии, ViewBag привязано к жизненному циклу вашего запроса. - person Mister Epic; 29.09.2013
comment
Просто сделайте то же самое, что и в своем Get действии. Заполните список SelectListItems и назначьте его ViewBag: ViewData["property"] = items; - person Mister Epic; 30.09.2013

Вы пробовали [обновлено]:

@Html.DropDownList("SpaceTypes", ViewData["property"] as SelectList)

Также после:

items.Add(new SelectListItem { Text = "Other", Value = "Other" });

Возможно, вам потребуется добавить:

items.Add(new SelectListItem { Text = "Other", Value = "Other" }, "Text", "Value", 1);

[добавлено] При желании вы также можете написать это так:

var items = new SelectList(new[]
    new { Text = "Private Residence", Value = "Private Residence" },
    new { Text = "Office", Value = "Office" },
    new { Text = "Place of worship", Value = "Place of worship" },
    new { Text = "Commercial Parking lot", Value = "Commercial Parking lot" },
    new { Text = "Retail", Value = "Retail" },
    new { Text = "Academic Institution", Value = "Academic Institution" },
    new { Text = "Other", Value = "Other" },
"Text", "Value", 1);

ViewData["property"] = items;
person nocturns2    schedule 29.09.2013