ASP.NET, Twitter.Bootstrap.MVC4, ASP.NET и меню с использованием маршрутов навигации

Я установил Twitter.Bootstrap.mvc4 в проекте VS2010. Я также установил Glimpse.

Я обнаружил, что меню, использующие навигационные маршруты, которые предлагает Twitter.Bootstrap.mvc4, «сломаны» Glimpse. В файле NavigationExensions.cs коллекция RouteCollection заключена в прокси-серверы Castle, в результате чего переменная navigationRoutes всегда возвращает 0.

        public static IEnumerable<NamedRoute> GetRoutesForCurrentRequest(RouteCollection routes,IEnumerable<INavigationRouteFilter> routeFilters)
    {
        var navigationRoutes = routes.OfType<NamedRoute>().Where(r=>r.IsChild==false).ToList();

Я могу видеть информацию в окне просмотра и даже получать информацию для отображения в окне Immediate, используя "((Castle.Proxies.RouteProxy_1)routes[5]).__target". Поэтому я подумал прокрутить маршруты и поискал именованный маршрут. Однако я не знаю, что делать, чтобы получить ссылки, необходимые для доступа к прокси. Код Castle скрыт в библиотеке Glimpse.Core.

Я удалил Glimpse, чтобы убедиться, что это вызывает проблему (так и есть).


person AC Thompson    schedule 07.07.2013    source источник


Ответы (1)


В настоящее время существует проблема, которая отражает ту же проблему, хотя и в другом контексте.

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

Чтобы заставить его работать снова, вы

  1. необходимо отключить RouteInspector Glimpse
  2. (необязательно) удалите вкладку «Маршруты» с панели управления Glimpse, так как теперь она будет отображать только частичную информацию из-за отсутствия инспектора. Хотя этот параметр не является обязательным, и на вкладке «Маршруты» может отображаться некоторая информация, которую вы, возможно, захотите увидеть.

Это можно сделать в разделе настроек Glimpse.

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
  <inspectors>
    <ignoredTypes>
      <add type="Glimpse.AspNet.Inspector.RoutesInspector, Glimpse.AspNet"/>
    </ignoredTypes>
  </inspectors>
  <tabs>
    <ignoredTypes>
      <add type="Glimpse.AspNet.Tab.Routes, Glimpse.AspNet"/>
    </ignoredTypes>
  </tabs>
</glimpse>
person cgijbels    schedule 08.07.2013
comment
Спасибо за этот вариант. Я отметил это как ответ, поскольку это позволяет использовать GetRoutesForCurrentRequest для работы и по-прежнему использовать большую часть Glimpse. Я склоняюсь к поиску другого способа создания системы меню, так как хотел бы сохранить как можно больше функций Glimpse. - person AC Thompson; 08.07.2013
comment
@cgijbels - Огромное спасибо! Интересно, есть ли зарегистрированная ошибка для этого в Glimpse. Согласен с @ac-thompson; ссылка предоставляет несколько быстрых, интуитивно понятных расширений html для начальной загрузки, помогающих создавать меню. Проверьте - ссылка - person RadicalFish; 06.04.2014