2010-09-14 10 views
2

Je suis en train de faire mon contenu CMS plus facile à utiliser par le contenu liste de la façon suivante:.NET/MVC enregistrement récursive liste

Parent - Sub - - Sub - - - Sub - - - - etc ...

En utilisant .NET/MVC2, où cette fonction serait-elle définie et comment serait-elle appelée.

Ceci est mon page listant mon contenu:

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

Ceci est mon action dans mon contrôleur:

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

Répondre

2

Ce serait une aide HTML:

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

que vous appelez dans la vue:

<%= Html.RenderRecords(Model) %> 

En ce qui concerne la mise en œuvre est concerné, vous pouvez jeter un oeil sur le blog de Eric Lippert qui a récemment wrote an article à propos de déversant une vieille école récursive. Tout ce dont vous avez besoin est de remplacer les symboles ASCII par des balises html appropriées (ul, li). Utiliser également un TagBuilder serait une bonne idée au lieu de coder en dur les balises html.

+0

De quel assembly/directive MvcHtmlString (ou son successeur, HtmlString) appartient-il? Aussi le TODO serait-il un LINQ et un appel récursif à lui-même? –

+0

Référence: [MvcHtmlString] (http://msdn.microsoft.com/en-us/library/system.web.mvc.mvchtmlstring.aspx). En ce qui concerne le TODO, comme je l'ai déjà mentionné dans ma réponse checkout, le lien [blog] (http://blogs.msdn.com/b/ericlippert/archive/2010/09/09/old- school-tree-display.aspx) qui sera utile pour sa mise en œuvre. Je suis sûr que vous ne vous attendez pas à ce que nous écrivions le code à votre place, alors n'hésitez pas à demander si vous avez des problèmes spécifiques à mettre en œuvre la solution proposée. –

Questions connexes