MVC 4 Portable Areas CSS / JS минификация - PullRequest
0 голосов
/ 03 апреля 2012

Я использовал MVC 3 + Contrib Project PortableAreas, чтобы разделить мою сеть на несколько проектов. Теперь я перешел на MVC 4 и хочу использовать минимизацию новых функций для моих css и JS.

Но когда я это сделаю:

<link href="@Url.Content("~/DSB/Styles/CSS")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/common/js")" type="text/javascript">

вместо:

<link href="@Url.Content("~/DSB/Styles/Site.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/themes/smoothness/jquery-ui-1.8.12.custom.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/common/jquery-1.4.4.min.js")" type="text/javascript" />
<script src="@Url.Content("~/Scripts/common/jquery-ui-1.8.11.custom.min.js")" type="text/javascript"></script>

это не работает. Как использовать пакетирование / минификацию в Переносных областях?

спасибо

1 Ответ

1 голос
/ 10 декабря 2012

Проблема здесь в том, что пакетирование и минификация не предусматривают обработку чего-либо, кроме реальных файлов.У меня есть 2 решения, которые работают.

Извлечение файлов во временные файлы - требуются права на запись для папки в приложении. Здесь - код для обработки этого.Он использует каталог с именем «Static» в качестве временного целевого пути.Вы можете использовать его следующим образом:

bundles.Add(new Rebundler(assemblyWithPortableArea, "~/VirtualPathUsedForResource")
                .Include("Fully.Qualified.Embeded.Resource.Name", "other...")
                .Rebundle());

Использовать его в шаблоне очень точно, как если бы вы использовали его в непереносимых приложениях, поэтому @ Scripts.Render () или @ Styles.Render ()

Другое решение включает создание группы классов, которые позволят вам использовать встроенные ресурсы. Здесь - базовый класс, а здесь - сценарий и стиль .Вот пример использования:

bundles.Add(new EmbededStyleBundle(assemblyWithPortableArea, "~/VirtualPathUsedForResource")
                .Include("~/AreaName/Content/themes/custom/jquery-ui.css"));

При таком подходе вам необходимо использовать этот класс для рендеринга ресурсов.Поэтому вместо использования @ Scripts.Render () или @ Styles.Render () код шаблона выглядит следующим образом:

@Assets.RenderStyles("virtual path here")
@Assets.RenderScripts("virtual path here")

Обратите внимание, что этот код далеко не чистый.Он был в основном реверс-инжиниринг и может пропустить несколько путей, но пока он работает.

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