2 Stimmen

.NET/MVC rekursive Datensatzauflistung

Ich versuche, mein Content-CMS benutzerfreundlicher zu gestalten, indem ich die Inhalte in der folgenden Weise aufliste:

Elternteil - Unterseite - Unterseite - - Unterseite - - - usw...

Mit .NET/MVC2, wo würde diese Funktion definiert werden und wie würde es aufgerufen werden.

Dies ist meine Seite, die meine Inhalte auflistet:

<%@ 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>

Dies ist meine Aktion in meinem Controller:

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);
}

2voto

Darin Dimitrov Punkte 990883

Dies wäre eine HTML-Hilfsfunktion:

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

Die Sie innerhalb der Ansicht aufrufen:

<%= Html.RenderRecords(Model) %>

Was die Umsetzung betrifft, so können Sie einen Blick in den Blog von Eric Lippert werfen, der kürzlich schrieb einen Artikel über das Dumping eines rekursiven Baums nach alter Schule. Sie müssen lediglich die ASCII-Symbole durch entsprechende html-Tags ersetzen ( ul , li ). Auch die Verwendung eines TagBuilder wäre eine gute Idee, anstatt html-Tags fest zu kodieren.

0voto

Jason N. Gaylord Punkte 7320

Wenn Sie einfach versuchen, Daten aufzulisten, indem Sie die Daten über die Ansicht zurückgeben, können Sie etwa so vorgehen:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X