没有类型为“IEnumerable <selectlistitem>”的ViewData项具有“SelectedCategoriesIds”键

时间:2016-07-12 13:10:22

标签: c# asp.net-mvc razor

我得到了错误

  

没有类型为“IEnumerable”的ViewData项具有“SelectedCategoriesIds”键。

我的型号代码:

   public class NewsViewModel
    {
        public int NewsId { get; set; }
        public string NewsTitle { get; set; }
        public string NewsBody { get; set; }
        public System.DateTime NewsDate { get; set; }
        public string NewsImagePath { get; set; }
        public HttpPostedFileBase NewsImageFile { get; set; }
        public int[] SelectedCategoriesIds { get; set; }

    }

我在Controller中的代码:

var list = db.Categories.ToList();
ViewBag.CategoryList = from c in list 
                       orderby c.CategoryName 
                       select new SelectListItem 
                                 { 
                                   Value = c.CategoryId.ToString(), 
                                   Text = c.CategoryName.Trim() 
                                 };

在剃刀中:

@Html.DropDownListFor(model => model.SelectedCategoriesIds,
                     (IEnumerable<SelectListItem>)ViewBag.CategoryList,
                        new 
                        { 
                          id = "dropdownOne", 
                          @class = "form-control", 
                          multiple = "true" 
                         }
                      )

2 个答案:

答案 0 :(得分:0)

DropDownListFor仅支持一个选择。看起来你需要一个CheckBoxListFor,因为它有多种选择。

您可以查看我的小nuget包CheckBoxList.Mvc,它为您提供CheckBoxListFor

https://github.com/stephenzeng/CheckBoxList.Mvc

目前它不支持int [],但我现在要添加它。

答案 1 :(得分:0)

对于多个选择,您可以使用

  • @ Html.ListBoxFor(x =&gt; x.model.SelectedCategoriesIds,(IEnumerable)ViewBag.CategoryList,new {id =“AnyName”,Multiple =“multiple”})