С этой целью я написал некоторый код, есть часть, которая использует мое собственное расширение, такое как Язык, иди дальше и используй его, просто проигнорируй второстепенную часть.
Это я помещаю поверх моего Partial, который содержит меню для получения действия и контроллера, чтобы я мог передать это расширению.
<% string currentAction = ViewContext.RouteData.Values["action"].ToString();
string currentController = ViewContext.RouteData.Values["controller"].ToString(); %>
Это элемент боковой панели, в основном он генерирует тег "li" со ссылкой и вашим пользовательским классом, чтобы указать, используется ли ссылка в данный момент на странице / выделении.
public static string SidebarItem(this System.Web.Mvc.HtmlHelper html, string currentAction, string currentController, string action, string controller, string languageKey, params object[] args)
{
TagBuilder tb = new TagBuilder("li");
if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) && string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
{
tb.GenerateId("activemenu");
}
string text = html.Language(languageKey, args);
string link = html.ActionLink(text, action, controller).ToHtmlString();
tb.SetInnerText("{0}");
return String.Format(tb.ToString(), "<span>"+link+"</span>");
}
а вот фактическое использование кода выше
<%= Html.SidebarItem(currentAction, currentController, "index", "home", "index") %>