Вы можете создать PartialView, у которого есть Category-класс как Модель, что-то вроде этого:
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);
}
Теперь вам нужно передать только корневые категории в ваше представление
Это должно дать вам рекурсивное представление с категориями и / или подкатегориями.
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; }
}
Я также обновил код в верхней части, чтобы отразить эту модель
Надеюсь, это поможет!