Почему ResolveBundleUrl не работает для пользовательских папок? (MVC Beta 4)
Из совершенно нового веб-приложения ASP.NET MVC 4 Beta я переустанавливаю свои папки в соответствии с Rob Conery Пример VidPub.Web
В частности, это означает, что окончательная структура каталогов для содержимого выглядит следующим образом:
VidPub.Web
|
---Public
|
|---Images
|--- *.png
|---javascripts
|--- *.js
|---stylesheets
|----themes
|---base
|--- images
|--- *.css
|----site.css
Однако, когда я изменяю следующие строки в _Layout.cshtml
<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
"~/Content/css")"
rel="stylesheet"
type="text/css" />
<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
"~/Content/themes/base/css")"
rel="stylesheet"
type="text/css" />
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
"~/Scripts/js")"></script>
к
<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
"~/Public/stylesheets/css")"
rel="stylesheet"
type="text/css" />
<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
"~/Public/stylesheets/themes/base/css")"
rel="stylesheet"
type="text/css" />
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
"~/Public/javascripts/js")"></script>
В конечном итоге я получаю абсолютно ничего.
<link rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" />
<script></script>
Почему он не собирает файлы в своих новых местах?
Ответы
Ответ 1
В Application_Start
в Global.asax.cs
используйте BundleTable.Bundles.EnableDefaultBundles();
вместо BundleTable.Bundles.RegisterTemplateBundles();
Если вы посмотрите на источник для RegisterTemplateBundles
, вы увидите, что он фактически ищет (и добавляет) конкретные js и css файлы. EnableDefaultBundles
, с другой стороны, делает почти то же самое, что и при добавлении собственных пакетов.
Ответ 2
Кажется, вам нужно зарегистрировать свой собственный пакет при использовании каталогов, отличных от по умолчанию. Я добавил следующее в Application_Start
и исправил проблему
var bundle = new Bundle("~/Public/stylesheets/css", new CssMinify());
bundle.AddDirectory("~/Public/stylesheets", "*.css", true);
BundleTable.Bundles.Add(bundle);
bundle = new Bundle("~/Public/javascripts/js", new JsMinify());
bundle.AddDirectory("~/Public/javascripts", "*.js", true);
BundleTable.Bundles.Add(bundle);