.NET/MVC递归记录列表
我正试图通过以下方式列出内容,使我的内容CMS更加用户友好: 母公司 -子页 --子页 -——子页 -————等等 使用.NET/MVC2,该函数将在何处定义以及如何调用。 这是我的页面,列出了我的内容:.NET/MVC递归记录列表,.net,asp.net-mvc-2,recursion,.net,Asp.net Mvc 2,Recursion,我正试图通过以下方式列出内容,使我的内容CMS更加用户友好: 母公司 -子页 --子页 -——子页 -————等等 使用.NET/MVC2,该函数将在何处定义以及如何调用。 这是我的页面,列出了我的内容: <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Content.master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <
<%@ 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);
}
public ActionResult Content()
{
//现在只获取父项。
List viewData=DB.SiteContents.Where(c=>c.ParentID==null).OrderBy(c=>c.ParentID.ToList();
返回视图(viewData);
}
如果您只是试图通过将数据传回视图来列出数据,您可以执行以下操作:
这将是一个HTML助手:
public static class HtmlExtensions
{
public static MvcHtmlString RenderRecords(this HtmlHelper htmlHelper, IEnumerable<SiteContent> model)
{
// TODO: ...
}
}
public静态类
{
公共静态MvcHtmlString渲染记录(此HtmlHelper HtmlHelper,IEnumerable模型)
{
//TODO:。。。
}
}
您在视图中称之为:
<%= Html.RenderRecords(Model) %>
就实现而言,你可以看看Eric Lippert的博客,他最近提到了抛弃递归树的老方法。您只需将ASCII符号替换为适当的html标记(
ul
,li
)。另外,使用a代替硬编码html标记也是一个好主意。MvcHtmlString(或其后继者HtmlString)属于哪个程序集/指令?TODO也是某种LINQ和对自身的递归调用吗?引用:。就TODO而言,正如我在回答中已经提到的,签出链接将有助于实现它。我相信您不会期望我们代替您编写代码,所以请不要犹豫,询问您在实现建议的解决方案时是否存在一些具体问题。