Как выделить текущую страницу в меню при использовании OutputCache с ASP.Net MVC 2? - PullRequest
0 голосов
/ 19 октября 2010

У меня есть меню, которое создается из базы данных.Когда пользователи перемещаются по страницам, текущая страница выделяется с помощью класса css.

Меню отображается с Html.RenderAction("Menu","Home");

Из-за того, что меню управляется данными, я использую новое ChildActionCache *Атрибут 1007 *, который находится в проекте ASP.NET MVC 2 Futures для кэширования меню.

Именно здесь начинается проблема, поскольку отображение из кэша меню «выделение текущей страницы» больше не работает.

Как я могу это исправить?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 19 октября 2010

Основной способ исправить это - остановить кэширование меню.: -P

В качестве альтернативы, не указывайте текущую страницу с сервера, а вместо этого сделайте это с некоторой добротой jQuery на стороне клиента;таким образом, сервер все еще может кэшировать меню, и клиент будет изменять вид ссылки в меню на текущую страницу.

Конечно, это второе решение не будет работать в браузерах без включенной JS, ноИМО, это честный компромисс.

0 голосов
/ 20 октября 2010

Я вчера придумал это решение.

$("#nav-side,#nav-footer").find("a[href='" + window.location.pathname + "']").each(function () {
        $(this).addClass("current");
});
...