我有一个大问题,至少对我而言。 我有一个包含类别和无限子类别的表。 该表如下所示:
ID Parent_ID名称
1空骑
2 1 gallopa
3 null figure
4 2捕手
并且有一个表格包含属于某个类别的项目。 该表如下所示:
ID cattegory_ID名称
1 4快速
2 1慢
3 3高
4 2低
现在我想从数据库中检索它们并在我的mvc2应用程序中显示它们,如下所示: 第一个类别的字段集,以及之前字段集中子类别的字段集。这些项应该在带有复选框的字段集中列出。 http://i.stack.imgur.com/lyMWD.png
我喜欢与@Html.CheckBoxfor
合作。
有人有任何想法吗?我上周以来一直在研究这个问题而没有结果。 我尝试递归地解决问题,但它没有用。 一个例子是美丽的,非常感谢!
非常感谢您的回答! 一切正常!但是如何用这个模型做一个Httppost?以及如何检查状态是否已检查每个复选框?
这是我的开始:
[HttpPost]
public ActionResult CreateNewHorse(NewHorseModel collection)
{
collection.Cattegories.Count(); <------------is always null! Why?
}
答案 0 :(得分:0)
您可以创建一个将Category-class作为模型的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>
<强> Choice.cshtml 强>
@model StackOverflow_Tester.Models.Choice
<p>@Html.LabelFor(m => m.Selected) @Html.CheckBoxFor(m => m.Selected)</p>
在主视图中,您只需根据类别呈现部分视图:
@foreach (var item in Model)
{
Html.RenderPartial("Category", item);
}
现在您只需要将根类别传递到视图中
这应该为您提供包含类别和/或子类别的递归视图。
<强>更新强>
viewmodel / model看起来像这样:
<强> 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; }
}
我也更新了顶部的代码,以反映此模型
希望这有帮助!