mscottford (owner)

Revisions

gist: 118926 Download_button fork
public
Description:
An ASP.NET MVC HTML helper method that renders a menu from a SiteMap
Public Clone URL: git://gist.github.com/118926.git
MvcSiteMapMenuHelper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
        public static string Menu(this HtmlHelper helper, string siteMapProviderName)
        {
            var provider = SiteMap.Providers[siteMapProviderName];
            return NodesAsHtml(provider.RootNode);
        }
 
        private static string NodesAsHtml(SiteMapNode node)
        {
            var writer = new StringWriter();
 
            if (node.HasChildNodes)
            {
                if (!String.IsNullOrEmpty(node.Title))
                {
                    writer.Write("<span>{0}</span>", node.Title);
                }
                writer.Write("<ul>");
                foreach (SiteMapNode childNode in node.ChildNodes)
                {
                    writer.Write("<li>");
                    writer.Write(NodesAsHtml(childNode));
                    writer.Write("</li>");
                }
                writer.Write("</ul>");
            }
            else
            {
                writer.Write("<a href=\"{0}\">{1}</a>", node.Url, node.Title);
            }
 
            return writer.ToString();
        }