请帮我清理我的ASP.NET MVC标签汤

时间:2009-03-13 15:27:27

标签: asp.net-mvc

我正在为我的网站创建一个菜单。它有一个层次结构。

这就是我想要的:

  • 大祖父母
    • 祖父母
        • Sibling1
        • Sibling2
        • Sibling3
          • Child1
          • CHILD2
          • Child3

HTML:

<ul>
    <li><a href="/389">Great Grandparent</a>
        <ul>
            <li><a href="/456">Grandparent</a>
                <ul>
                    <li><a href="/389">Parent</a>
                        <ul>
                            <li><a href="/986">Sibling1</a></li>
                            <li><a href="/983">Sibling2</a></li>
                            <li><a href="/418">Sibling3</a></li>
                            <li><strong>Self</strong>
                                <ul>
                                    <li><a href="/310">Child1</a></li>
                                    <li><a href="/953">Child2</a></li>
                                    <li><a href="/927">Child3</a></li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

这是我的ASPX页面中的代码。这有效:

<% For Each Ancestor As Node In ViewData("Ancestors")%>
    <ul>
        <li><%=Html.RouteLink(Html.Encode(Ancestor.Name), "IdOnly", New With {.id = Ancestor.Id})%>
<% Next%>
            <ul>
<% For Each Sibling As Node In ViewData("Siblings")%>
                <li><%=Html.RouteLink(Html.Encode(Sibling.Name), "IdOnly", New With {.id = Sibling.Id})%></li>
<% Next%>
                <li><strong><%=Html.Encode(Model.Name)%></strong>
<% If Model.Children.Count > 0 Then%> 
                    <ul>
    <% For Each Child As Node In ViewData("Children")%>
                        <li><%=Html.RouteLink(Html.Encode(Child.Name), "IdOnly", New With {.id = Child.Id})%></li>
    <% Next%>
                    </ul>
<% End If%>
                </li>
            </ul>
<% For Each Ancestor As Node In ViewData("Ancestors")%>
        </li>
    </ul>
<% Next%>

ASPX页面似乎很难阅读。我怎样才能清理它?

2 个答案:

答案 0 :(得分:2)

更好的解决方案是创建一个html帮助器(如果它还不存在)。

看看这个问题,了解如何做到这一点

ASP.NET MVC HtmlHelper extensions for YUI controls (Yahoo User Interfaces)?

答案 1 :(得分:1)

我建议的一件事是在你编写父标签之前检查应该在“li”标签中的项目数,否则你最终会得到空的“ul”标签,这些标签将无法验证。如果这没有意义我稍后会详细说明我有更多时间。就格式化而言,也许更多缩进可能会使其更容易阅读。