iNerd Blog

ASP.NET MVC Menu Item Helper (selected/non-selected menu)

Posted in Uncategorized by Ari on 9 April 2010
using System;
using System.Web.Mvc;
using System.Web.Mvc.Html;
namespace Helpers
{
     /// <summary>
     /// This helper method renders a link within an HTML LI tag.
     /// A attribute is added to the tag when
     /// the link being rendered corresponds to the current
     /// controller and action.
     /// 
    /// This helper method is used in the Site.Master View 
   /// Master Page to display the website menu.
   /// </summary>
 public static class MenuItemHelper
 {
          public static string MenuItem(this HtmlHelper helper, string linkText, string actionName, string controllerName)
          {
                      string currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"];
                      string currentActionName = (string)helper.ViewContext.RouteData.Values["action"];

                      var builder = new TagBuilder("li");
 
                     // Add selected class
                     if (currentControllerName.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase) && currentActionName.Equals(actionName,StringComparison.CurrentCultureIgnoreCase))
                            builder.AddCssClass("selected");            
 
                    // Add link
                   builder.InnerHtml = helper.ActionLink(linkText, actionName, controllerName);

                   // Render Tag Builder
                   return builder.ToString(TagRenderMode.Normal);
 }

         }
}

Leave a comment