Лучший способ пометить «текущий» элемент навигации в меню

Например, здесь, в StackOverflow, вы можете выбрать главное меню с параметрами:Вопросов, Теги, пользователей, Значки, оставшийся без ответа а такжеЗадавать вопрос, Когда вы находитесь в одном из этих разделов, он выделяется оранжевым цветом.

Каков наилучший способ добиться этого в ASP.NET MVC?

Пока и в качестве доказательства концепции я сделал этого помощника:

    public static String IsCurrentUrl(this UrlHelper url, String generatedUrl, String output)
    {
        var requestedUrl = url.RequestContext.HttpContext.Request.Url;

        if (generatedUrl.EndsWith("/") && !requestedUrl.AbsolutePath.EndsWith("/"))
            generatedUrl=generatedUrl.Substring(0, generatedUrl.Length - 1);

        if (requestedUrl.AbsolutePath.EndsWith(generatedUrl))
            return output;

        return String.Empty;

    }

Этот метод добавляет строку вывода к элементу, если текущий запрос соответствует этой ссылке. Так что это можно использовать так:

<li>
    <a href="@Url.Action("AboutUs","Home")" @Url.IsCurrentUrl(@Url.Action("AboutUs", "Home"), "class=on")><span class="bullet">About Us</span></a>
 </li>

Первая проблема, я в основном звоню дваждыUrl.Actionсначала для атрибута "href", а затем во вспомогательном, и я думаю, что должен быть лучший способ сделать это. Вторая проблема, это не лучший способ сравнить две ссылки. Я думаю, что я мог бы создать новыйHtml.ActionLink перегрузка, поэтому мне не нужно называтьUrl.Action дважды, но есть ли встроенный способ сделать это?

Бонус: если я добавлю"class=\"on\"", MVC оказываетclass=""on"", Почему?

С уважением.

Ответы на вопрос(4)

Ваш ответ на вопрос