Категории и подкатегории MVC2 - PullRequest
0 голосов
/ 28 марта 2011

У меня большая проблема, по крайней мере, для меня.У меня есть таблица с категориями и неограниченными подкатегориями.Таблица выглядит следующим образом:

ID Parent_ID Имя

1 ноль езда

2 1 галлопа

3 ноль фигура

4 2 trapper

И есть таблица, содержащая предметы, которые относятся к категории.Таблица выглядит следующим образом:

ID cattegory_ID Имя

1 4 быстрых

2 1 медленных

3 3 высоких

4 2 low

Теперь я хочу извлечь их из базы данных и показать их в моем приложении mvc2 следующим образом: набор полей для первой категории и один для подкатегории в наборе полей ранее.Элементы должны быть перечислены в fieldset с флажками.http://i.stack.imgur.com/lyMWD.png

Мне нравится работать с @Html.CheckBoxfor.

У кого-нибудь есть идеи?Я работаю над этой проблемой с прошлой недели безрезультатно.Я пытался решить проблему рекурсивно, но это не сработало.Пример был бы красив, спасибо большое!

Большое спасибо за ваш ответ!Все отлично работает!Но как сделать Httppost с этой моделью?А как получить статус Проверено или не Проверено у каждого флажка?

вот мой старт:

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

1 Ответ

0 голосов
/ 28 марта 2011

Вы можете создать 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; }
}

Я также обновил код в верхней части, чтобы отразить эту модель

Надеюсь, это поможет!

...