2016-07-24 29 views
0

我完全新的ASP.net MVC實現對象的集合,在我看來模型 - ASP.net MVC

我有兩個模型首先是

public class Category 
{ 
    public virtual int Id { get; set; } 
    [Required] 
    public virtual string CategoryName { get; set; } 
    public virtual List<SubCategory> SubCategories { get; set; } 

} 

和下一子類別模型:

public class SubCategory 
{ 
    public virtual int Id { get; set; } 

    public virtual int CategoryId { get; set; } 
    [Required] 
    public virtual string SubCategoryName { get; set; } 
    public virtual Category Category { get; set; } 
    public virtual List<Question> Questions { get; set; } 

} 

我需要我的類別列表,也都在我看來,子類別列表,所以這是我的視圖模型

public class CategorySubCategoryViewMoel 
{ 
    public ICollection<Category> Category { get; set; } 
    public SubCategory SubCategory { get; set; } 


} 

,這裏是我的觀點

@model FinalSearch5.Models.CategorySubCategoryViewMoel 
<ul> 
    @foreach (var category in Model.Category) 
    { 
    <li>@category.CategoryName</li> 
    } 
</ul> 

這裏是我的控制器

public ActionResult Index() 
    { 
     var cats = db.Categories.ToList(); 
     return View(cats); 
    } 

這不是一個完全實現還沒有,但直到這裏還有一個錯誤

模型項目通過到字典中的類型是'System.Collections.Generic.List1 [FinalSearch5.Models.Category],但是這個字典需要一個模型項目類型'FinalSearch5.Models.CategorySubCategoryViewMoel'。

欣賞如果幫助我什麼是問題謝謝。

+0

的可能的複製[兩種型號在一個視圖中的ASP MVC 3](http://stackoverflow.com/questions/5550627/two-models -in-one-view-in-asp-mvc-3) – Aravind

+2

錯誤信息是不言自明的(你的視圖期望'CategorySubCategoryViewMoel',但是你傳遞它'List ''Category'包含一個'SubCategory'的集合,你需要一個視圖模型與2個獨立的集合 - 當然你想要顯示每個類別,併爲每個類別,它的集合SubCategory(即嵌套'foreach'循環) –

+0

@Aravind謝謝你。我檢查了一些相關問題。我的問題是,我有一個視圖莫我的類別的集合德爾。如果我省略了這個集合,我在這一行中有編譯錯誤'@foreach(Model.Category中的var類)' –

回答

2

您認爲需要一個型號爲CategorySubCategoryViewMoel的型號,但在Index()方法中,您返回的型號爲List<Category>。爲了它的工作,你可以在方法更改爲

public ActionResult Index() 
{ 
    var model = new CategorySubCategoryViewMoel 
    { 
     Category = db.Categories.ToList() 
    } 
    return View(model); 
} 

注意,屬性是一個集合,所以它的名字應該使用複數,而只需要爲IEnumerablepublic IEnumerable<Category> Categories { get; set; }

但是它不清楚是什麼你的視圖模型的目的是。它唯一的其他屬性是public SubCategory SubCategory { get; set; },您從不爲其分配值或在視圖中使用它。你的代碼可以使用當前Index()方法,然後視圖將

@model List<Category> 
<ul> 
    @foreach(var category in Model) 
    { 
     <li> 
      @category.CategoryName 
      <ul> 
       @foreach(var subCategory in category.SubCategories) 
       { 
        <li>@subCategory.SubCategoryName</li> 
       } 
      </ul> 
     <li> 
    } 
<ul> 
相關問題