我试图通过以下列方式列出内容,使我的内容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);
}
答案 0 :(得分:2)
这将是一个HTML助手:
public static class HtmlExtensions
{
public static MvcHtmlString RenderRecords(this HtmlHelper htmlHelper, IEnumerable<SiteContent> model)
{
// TODO: ...
}
}
您在视图中调用的内容:
<%= Html.RenderRecords(Model) %>
就实施而言,你可以看看Eric Lippert的博客,他最近wrote an article关于抛弃一个递归的树旧学校。您所需要的只是用适当的html标记(ul
,li
)替换ASCII符号。使用TagBuilder也是一个好主意,而不是硬编码html标签。
答案 1 :(得分:0)
如果您只是想通过将数据传回View中来列出数据,则可以执行以下操作:
http://www.asp.net/mvc/tutorials/displaying-a-table-of-database-data-cs