Я создал помощник html, который добавляет свойство класса css к элементу li, если пользователь находится на текущей странице. Помощник выглядит так:
public static string MenuItem( this HtmlHelper helper, string linkText,
string actionName, string controllerName, object routeValues, object htmlAttributes )
{
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( "active" );
// Add link
builder.InnerHtml = helper.ActionLink( linkText, actionName, controllerName, routeValues, htmlAttributes );
// Render Tag Builder
return builder.ToString( TagRenderMode.Normal );
}
Я хочу расширить этот класс, чтобы я мог передать имя маршрута помощнику, и, если пользователь находится на этом маршруте, он добавляет класс css к элементу li. Однако мне сложно найти маршрут, по которому идет пользователь. Это возможно? Код, который у меня пока есть:
public static string MenuItem( this HtmlHelper helper, string linkText, string routeName, object routeValues, object htmlAttributes )
{
string currentControllerName =
( string )helper.ViewContext.RouteData.Values["controller"];
string currentActionName =
( string )helper.ViewContext.RouteData.Values["action"];
var builder = new TagBuilder( "li" );
// Add selected class
// Some code for here
// if ( routeName == currentRoute ) AddCssClass;
// Add link
builder.InnerHtml = helper.RouteLink( linkText, routeName, routeValues, htmlAttributes );
// Render Tag Builder
return builder.ToString( TagRenderMode.Normal );
}
Кстати, я использую MVC 1.0.
Спасибо