Рекурсивный список записей .NET / MVC - PullRequest
2 голосов
/ 14 сентября 2010

Я пытаюсь сделать свой контент CMS более удобным для пользователя, перечисляя контент следующим образом:

Родитель - Подстраница - - Подстраница - - - Подстраница - - - - и т. Д.

Используя .NET / MVC2, где будет определена эта функция и как она будет вызываться.

Это моя страница с моим контентом:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Content.master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

    <asp:Content ID="Head" ContentPlaceHolderID="HeadContent" runat="server">
    </asp:Content>

    <asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

        <ul>
            <%
                foreach (var item in Model) {
                    string contentTitle = item.Title;      
            %>
                <li class="row"><%: Html.ActionLink(contentTitle, "contentedit", new { id = item.ID }) %></li>
                <!-- List subpages recursively -->
            <% } %>
        </ul>

    </asp:Content>

Это мое действие в моем контроллере:

public ActionResult Content()
{
    // Get just parent items -- for now.
    List<SiteContent> viewData = DB.SiteContents.Where(c => c.ParentID == null).OrderBy(c => c.ParentID).ToList();


    return View(viewData);
}

Ответы [ 2 ]

2 голосов
/ 14 сентября 2010

Это будет помощник HTML:

public static class HtmlExtensions
{
    public static MvcHtmlString RenderRecords(this HtmlHelper htmlHelper, IEnumerable<SiteContent> model)
    {
        // TODO: ...
    }
}

Который вы вызываете в представлении:

<%= Html.RenderRecords(Model) %>

Что касается реализации, вы можете взглянуть на блог Эрика Липперта, который недавно написал статью о сбросе старой школы рекурсивного дерева. Все, что вам нужно, это заменить символы ASCII соответствующими HTML-тегами (ul, li). Также было бы неплохо использовать TagBuilder вместо жесткого кодирования HTML-тегов.

0 голосов
/ 14 сентября 2010

Если вы просто пытаетесь составить список данных, передав данные обратно через представление, вы можете выполнить что-то вроде этого:

http://www.asp.net/mvc/tutorials/displaying-a-table-of-database-data-cs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...