类别和子类别MVC2
问题描述:
我有一个大问题,至少对我而言。 我有一个带有类别和无限子类别的表。 表看起来像这样:类别和子类别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?
}
答
你可以创建一个具有类别级作为一种模式,像这样一个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 *_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; }
}
我已经更新了顶部的代码,以反映此模型
希望这有助于!
谢谢,但你可以显示模型或Viewmodel? – HW90 2011-03-28 14:20:20
以及如何创建复选框? (包括物品的型号) – HW90 2011-03-28 14:21:05
查看我更新的答案。 – 2011-03-28 15:43:59