Asp.net mvc 没有类型为';IEnumerable<;选择列表项>;MVC

Asp.net mvc 没有类型为';IEnumerable<;选择列表项>;MVC,asp.net-mvc,entity-framework,dropdownlistfor,Asp.net Mvc,Entity Framework,Dropdownlistfor,我已经完成了这个EF MVC应用程序(代码优先),它具有列出/编辑/删除功能。一切正常,但现在我需要添加两个下拉字段。产品具有需要编辑的类别和子类别。这就是我到目前为止所做的: ProductSubCategory ID为外键的主类 public class Product { public int ProductID { get; set; } public string Name { get; set; } public string ProductNumber {

我已经完成了这个EF MVC应用程序(代码优先),它具有列出/编辑/删除功能。一切正常,但现在我需要添加两个下拉字段。产品具有需要编辑的类别和子类别。这就是我到目前为止所做的:

ProductSubCategory ID为外键的主类

public class Product
{
    public int ProductID { get; set; }
    public string Name { get; set; }
    public string ProductNumber { get; set; }
    public int? ProductSubcategoryID { get; set; }
    public IEnumerable<SelectList> SelectedCat = new List<SelectList> {};
    public IEnumerable<SelectList> SelectedSubCat = new List<SelectList> {};
}

public class ProductCategory
{
    public int ProductCategoryID { get; set; }
    public string Name { get; set; }
}

public class ProductSubcategory
{
    public int ProductSubcategoryID { get; set; }
    public int ProductCategoryID { get; set; }
    public string Name { get; set; }
编辑时:

@Html.LabelFor(model => model.ProductSubcategoryID)
@Html.DropDownListFor(model => model.SelectedSubCat, ViewBag.SubcatSelection as SelectList, "ProductSubcategoryID", "Name");
结果是:

没有具有键“SelectedSubCat”的“IEnumerable”类型的ViewData项


因为
ViewBag.SubcatSelection
的值为
null
——可能是因为您提交了表单并返回了视图,而没有重新填充
ViewBag
属性。但是您无法将
绑定到
IEnumerable
属性(a
仅回发一个值)因此,您需要将proeprity设置为
public int SelectedSubCat{get;set;}
,或者需要使用
@Html.DropDownListFor(m=>m.productsubcategory id,ViewBag.subcatelection)绑定到属性
productsubcategory id
(请注意,最后一个参数
“Name”
毫无意义)我还建议您阅读问题和答案,以了解如何正确执行此操作。并始终使用视图模型-参考谢谢您的详细回答,它确实帮助我取得了成功。现在我有了一个工作示例,我只是这样更改了我的模型类:public IEnumerable SelectedSubCat=new List{new SelectListItem{Text=“Subcategory 1”,Value=“1”},new SelectListItem{Text=“Subcategory 2”,Value=“2”};现在,下一步是从数据库中读取子类别,而不是使用静态文本。如上所述,我已经有了这个ProductSubcategory类。你会推荐什么最简单实用的方法?
@Html.LabelFor(model => model.ProductSubcategoryID)
@Html.DropDownListFor(model => model.SelectedSubCat, ViewBag.SubcatSelection as SelectList, "ProductSubcategoryID", "Name");