Является ли папка Content священной в asp.net mvc? - PullRequest
23 голосов
/ 22 февраля 2009

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

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

В связанной заметке сценарий stackoverflow и содержимое css, похоже, извлекаются по номеру версии в строке запроса:

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

Хотите размышлять о том, как это может работать и почему это важно?

Ответы [ 5 ]

19 голосов
/ 08 октября 2009

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

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

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

5 голосов
/ 22 февраля 2009

Нет, папка Content не является священной. Используйте его как хотите.

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

4 голосов
/ 22 февраля 2009

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

3 голосов
/ 23 февраля 2009

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

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

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

1 голос
/ 22 февраля 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...