2012-03-10 7 views
20

Z nowiutkim ASP.NET MVC 4 Beta aplikacji sieci Web, mam re-aranżacji moje foldery dopasować Rob Conery na VidPub.Web exampleDlaczego funkcja ResolveBundleUrl nie działa w przypadku folderów niestandardowych? (MVC Beta 4)

Konkretnie oznacza to, że ostateczna struktura katalogów na wygląd treści jak to

 
VidPub.Web 
| 
---Public 
    | 
    |---Images 
      |--- *.png 
    |---javascripts 
      |--- *.js 
    |---stylesheets 
     |----themes 
       |---base 
        |--- images 
        |--- *.css 
     |----site.css 

jednak, kiedy zmienić następujące linie w _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> 

do

<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> 

Kończę się absolutnie nic w wynikowym HTML.

<link rel="stylesheet" type="text/css" /> 
<link rel="stylesheet" type="text/css" /> 
<script></script> 

Dlaczego nie podnosi plików w nowych lokalizacjach?

Odpowiedz

25

Pod Application_Start w Global.asax.cs użytku BundleTable.Bundles.EnableDefaultBundles(); zamiast BundleTable.Bundles.RegisterTemplateBundles();

Jeśli spojrzeć na źródło RegisterTemplateBundles widać, że rzeczywiście wygląda tylko na (i dodaje) określone pliki js i css. EnableDefaultBundles z drugiej strony działa tak samo, jak przy dodawaniu własnych pakietów.

+1

dokładnie to, czego potrzebuję. dzięki. – ashraf

+0

WOW! Całkowicie ratuje życie ... Myślę, że muszę dodać komentarz w tym poście http://dotnet.learningtree.com/2012/03/26/streamlined-web-loading-in-the-visual-studio-11-beta/aby autor wiedział o tym. –

+1

jest to lepsza opcja niż zaakceptowana odpowiedź. dzięki. –

21

Wygląda na to, że musisz zarejestrować swój własny pakiet, gdy używasz katalogów innych niż domyślne. I dodaje następujące do Application_Start i rozwiązaniu problemu

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); 
+2

Z _Microsoft.AspNet.Web.Optimization.1.0.0-beta2_ zastępujesz 'nowy pakiet (..., nowe CssMinify())' do 'StyleBundle' i' new Bundle (..., new JsMinify()) 'to' ScriptBundle'. –

+1

Z * Microsoft.AspNet.Web.Optimization.1.0.0-beta2 * wygląda na to, że AddDirectory nie jest już obsługiwaną metodą w pakiecie. Jaka jest nowa poprawka? – happyfirst

Powiązane problemy