2011-03-28 230 views
0

我有一個大問題,至少對我而言。 我有一個帶有類別和無限子類別的表。 表看起來像這樣:類別和子類別MVC2

ID PARENT_ID名稱

1空騎

2 1 gallopa

3空圖

4 2捕集

還有是包含屬於某個類別的項目的表格。 表看起來像這樣:

ID cattegory_ID名稱

1 4快速

2 1緩慢

3 3高

4 2低

現在我想要從數據庫中檢索它們並將它們顯示在我的mvc2應用程序中n像這樣: 第一個類別的字段集,以及之前字段集中的子類別的字段集。這些項目應該在複選框的字段集中列出。 http://i.stack.imgur.com/lyMWD.png

我喜歡和@Html.CheckBoxfor一起工作。

有沒有人有任何想法?自上週以來,我正在處理這個問題,但沒有結果。 我試圖遞歸解決問題,但它沒有奏效。 一個例子會很美,非常感謝!

非常感謝您的回答! 一切工作正常!但如何用這個模型做一個Httppost?以及如何獲取狀態檢查或不檢查每個複選框?

這裏是我的開始:

[HttpPost] 
    public ActionResult CreateNewHorse(NewHorseModel collection) 
    { 
     collection.Cattegories.Count(); <------------is always null! Why? 
    } 

回答

0

你可以創建一個具有類別級作爲一種模式,像這樣一個PartialView:

Category.cshtml

@model Category 

<fieldset> 
    <legend>@Model.Name</legend> 
    @foreach (var item in Model.Choices) 
    { 
     Html.RenderPartial("Choice", item); 
    } 

    @foreach(var item in Model.Subcategories) 
    { 
     Html.RenderPartial("Category", item); 
    } 
</fieldset> 

選擇。CSHTML

@model StackOverflow_Tester.Models.Choice 

<p>@Html.LabelFor(m => m.Selected) @Html.CheckBoxFor(m => m.Selected)</p> 

在主視圖中,你會根據類別簡單地渲染partialview:

@foreach (var item in Model) 
{ 
    Html.RenderPartial("Category", item); 
} 

現在,你只需要根類別傳遞到您的視圖

這應該給你帶有類別和/或子類別的遞歸視圖。

UPDATE

視圖模型/模型看起來是這樣的:

Category.cs

public class Category 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public List<Category> Subcategories { get; set; } 
    public List<Choice> Choices { get; set; } 
    public Category Parent { get; set; } 
} 

Choice.cs

public class Choice 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public bool Selected { get; set; } 
} 

我已經更新了頂部的代碼,以反映此模型

希望這有助於!

+0

謝謝,但你可以顯示模型或Viewmodel? – HW90 2011-03-28 14:20:20

+0

以及如何創建複選框? (包括物品的型號) – HW90 2011-03-28 14:21:05

+0

查看我更新的答案。 – 2011-03-28 15:43:59