2013-09-29 54 views
0

我将下拉列表的选定值插入到数据库中,但它给我提供了dropdownlist助手所在位置的错误。没有类型为“IEnumerable”的ViewData项目具有“SpaceType”键。 型号:在db中插入DropDownList值

 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(); 
    } 

回答

0

您是否尝试过[更新]:

@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; 
0

投到列表:

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

仍然是一样的错误没有类型为'IEnumerable '的ViewData项具有键'SpaceType'。 – Wasfa

+0

您的视图输入了什么模型?在顶部,你应该看到'@model SomeModel' –

+0

视图被键入到模型AddSpace..Am我缺少的东西在HttpPost方法? – Wasfa