Подтвердить что ты не робот

Является ли папка содержимого священной в asp.net mvc?

Является ли папка содержимого специальной для базовой структуры MVC? Я не могу найти ссылку на него в коде или конфигурации маршрутизации.

Мне просто интересно, можно ли обрабатывать статический контент по-разному.

В соответствующем примечании, stackoverflow script и содержимое css, по-видимому, извлекаются по номеру версии в строке запроса:

<link href="/Content/all.min.css?v=2516" rel="stylesheet" type="text/css" />

Подумайте, как это может работать и почему это важно?

4b9b3361

Ответ 1

Без магии класс System.Web.Routing.RouteCollection имеет свойство RouteExistingFiles, которое контролирует поведение.

Значение по умолчанию - false, что означает, что ASP Routing не должна маршрутизировать URL-адрес, а просто возвращает содержимое по умолчанию. В этом случае "/Content/all.min.css?v=251" полностью пропускает правила маршрутизации MVC.

если вы хотите добавить правило маршрутизации для папки содержимого, вам нужно добавить правило и установить для RouteExistingFiles значение true.

Ответ 2

Нет, папка "Содержимое" не является священным. Используйте его как хотите.

Повторите эту версию - это общий трюк, помогающий с управлением версиями, если включено кэширование на основе HTTP-заголовков; в противном случае вы не можете гарантировать, что все клиенты используют обновленные файлы. Вы увидите много "foo_v4.js" и т.д. В Интернете; -p

Ответ 3

Я использую ту же технику на некоторых моих сайтах. Я использую его, чтобы избежать кеширования - если вы не укажете другой URL для разных сборок, клиенты могут кэшировать старый.

Ответ 4

Просто добавьте к другим комментариям об этом - как работает система маршрутизации:

Входит запрос и направляется к механизму маршрутизации, который затем просматривает таблицу маршрутов для соответствия - в том порядке, в котором они зарегистрированы (поэтому вы должны указывать более конкретные маршруты перед более общими маршрутами).

Если совпадение не найдено, механизм маршрутизации передает запрос в IIS для нормальной работы - это также то, как вы можете смешивать веб-формы ASP.NET и MVC в одном приложении.

Ответ 5

Это не имеет особого значения. Это просто название арбитража. Если вы используете мастер ASP.NET MVC RC, вы обнаружите, что он указан на вашей главной странице (Site.master):

<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

Что касается all.min.css, используемого в SO, это может быть пользовательский обработчик, который выполняется на сервере для получения сжатой таблицы стилей по версии.