customize HTML output of MvcSiteMapProvider HtmlHelper
The latest version of the SiteMap provider for ASP.NET MVC now includes support for templated helpers. This means you can use your SiteMap to dynamically create your site navigation based on your SiteMap and make it look extra shiny. Create your partial views under the “Views\Shared\DisplayTemplates" folder in your project and customize the output to your heart’s content. Here is an modified version of the default MvcSiteMapProvider.Web.Html.Models.MenuHelperModel partial view (used by Html.MvcSiteMap().Menu() HtmlHelper):
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl`1[ [MvcSiteMapProvider.Web.Html.Models.MenuHelperModel,MvcSiteMapProvider] ]" %>
<%@ Import Namespace="System.Web.Mvc.Html" %>
<ul>
<% for (int i = 0; i < Model.Nodes.Count; i++)
{
var node = Model.Nodes[i];
if (node.IsCurrentNode)
{ %>
<li class="active">
<% } else { %>
<li>
<% } %>
<%= Html.DisplayFor(m => node)%>
<% if (node.Children.Any()) { %>
<%= Html.DisplayFor(m => node.Children)%>
<% } %>
<% if (i == (Model.Nodes.Count - 1))
{ %>
This is the last node
<% } else { %>
This is every other node
<% } %>
</li>
<% } %>
</ul>
This new version makes it super easy for you (or your CSS guru) to easily change the markup generated to whatever you want it to look. Awesome. Here is more information about the HtmlHelper functions.