Другая аналогия: давайте скажем, что Вы - разработчик и каждый раз, когда Вам нравитесь Вы книги по информатике порядка с рынка непосредственно - Вы знаете продавцов и их цены. На самом деле Ваша компания могла бы иметь предпочтительного продавца, и Вы связываетесь с ними непосредственно. Все это хорошо работает, но может быть новым продавцом, теперь предлагает лучшие цены, и Ваша компания хочет изменить 'предпочтительного' продавца.
В этой точке необходимо внести следующие изменения - обновляют контактную информацию (и другой материал), чтобы использовать нового продавца. Вы все еще размещаете заказ непосредственно.
Теперь полагают, что мы представляем новый промежуточный шаг, существует чиновник 'библиотеки' в компании, и необходимо пройти его для получения книг. В то время как существует новая зависимость, Вы теперь неуязвимы для любых изменений в продавце: или режим изменений продавца оплаты или сам продавец изменяются, Вы теперь просто помещаете порядок в библиотекаря, и он получает книги для Вас.
Это одна из самых неприятных вещей в изучении MVC - документация по этой функции ужасна - там почти ничего нет: http://msdn.microsoft.com/en -us / library / dd470170 (VS.100) .aspx .
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Это позволяет всем файлам something.axd запускаться вне MVC - что "{* pathInfo}" в конце позволяет игнорировать строки запроса (это своего рода подстановочный знак.)
Обратите внимание, что это не применяет никаких подстановочных знаков к пути, поэтому:
trace.axd?clear=1 //excluded from MVC
mySubFolder/customResource.axd //MVC passed to mySubFolderController.customResource()
Полезно. Мне не удалось найти какой-либо достойной документации о том, что именно поддерживается, а что не поддерживается в качестве ключевых слов, кроме "{resource}" и "{* pathInfo}"
. Однако есть почти полностью недокументированная функция, которая дает вам гораздо больше контроля над этими игнорируемыми маршрутами:
Файл .axd - это виртуальный файл, который обрабатывается обработчиком HTTP. Они используются (среди прочего) для доставки различных ресурсов на веб-страницу, таких как автоматически сгенерированный javascript для элементов управления AJAX и т. Д.
Поскольку это виртуальные файлы, вы не хотите, чтобы механизм маршрутизации пытался сопоставить эти запросы к контроллерам. Вам нужно, чтобы они выполнялись непосредственно ASP.NET.
Это то, чего добивается строка.
Без этого ASP.NET будет пытаться сопоставить все запросы к обработчикам AXD с контроллерами и действиями. Наличие ignoreRoute означает, что URL-адрес не будет сопоставлять URL-адрес с контроллером в соответствии с поведением по умолчанию.
Он сообщает механизму маршрутизации игнорировать этот запрос и оставить его. в веб-формы ASP.NET для обработки вещей.
Это полезно, например, при ведении журнала ELMAH, которое использует обработчик elmah.axd.