4

以下を使用する既存の ASP.NET MVC 4 (.NET 4.5) Web サイトにバンドルを追加したいと考えています。

https://gist.github.com/jkarsrud/5143239の指示に従おうとしましたが、バンドル パスを開始する前に CSS が正常に読み込まれました。

ページの読み込み時に、スタイル参照が挿入されます。

<link href="/bundles/marketingcss" rel="stylesheet">

しかし、404 エラーが発生します。

> GET http://localhost:20459/bundles/marketingcss 404 (Not Found) 

ここに私がコードで持っているものがあります:

Web.Config

<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/bundles" />

Global.asax

<%@ Application Codebehind="Global.asax.cs" Inherits="MapCom.Global" Language="C#" %>

Global.asax.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Optimization;
using System.Web.Security;
using System.Web.SessionState;
using Umbraco.Web;

namespace MapCom
{
    public class Global : UmbracoApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            base.OnApplicationStarted(sender, e);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

_Layout.cshtml

@Styles.Render("~/bundles/marketingcss");

BundleConfig.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Optimization;

namespace MapCom
{
    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles)
        {
            BundleTable.EnableOptimizations = true;
            ///
            ///Marketing Site CSS Bundle
            ///
            bundles.Add(new StyleBundle("~/bundles/marketingcss")
                .Include("~/plugins/bootstrap/css/bootstrap.min.css")
                .Include("~/css/font-awesome.min.css")
                .Include("~/plugins/parallax-slider/css/parallax-slider.css")
                .Include("~/css/combinedStyles.min.css")
                .Include("~/plugins/ladda-buttons/css/ladda.min.css")
                .Include("~/plugins/ladda-buttons/css/custom-lada-btn.css"));
        }
    }
}

何か案は?

4

3 に答える 3

6

Umbraco を深く掘り下げた後、私が取り組んでいるプロジェクトがクラスを利用していることに気付きました。

 public class ApplicationEventHandler : IApplicationEventHandler

ここで詳しく説明されています: http://our.umbraco.org/documentation/Reference/Events/application-startup

しかし、要点は次のとおりです。

Umbraco アプリケーションで特定のイベントにバインドするには、アプリケーションの起動時にこれらの登録を行う必要があります。使用している Umbraco のバージョンに基づいて、アプリケーションの起動に接続するさまざまな方法があります。使用しているバージョンが高いほど、これはより堅牢になります。

そのため、Umbraco は ASP.NET 起動メソッドの一部をオーバーライドしています。

System.Web.Optimization への参照を ApplicationEventHandler.cs に追加して問題を解決し、バンドル登録をそのクラスのこのメソッドに移動しました。

public void OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}
于 2014-06-05T14:53:15.077 に答える
3

ここで私のために働いた唯一のことは、バンドルへのパスを次の設定に追加することでしweb.config

私のバンドルコード

BundleTable.Bundles.Add(new ScriptBundle("~/opt/jscripts").Include(
                "~/Scripts/twitterFetcher.js"
                ));
            BundleTable.EnableOptimizations = true;

アンブラコのデフォルト設定

<add key="umbracoReservedPaths" value="~/umbraco,~/install/" />

新しい設定

<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/opt/" />
于 2014-12-04T19:47:50.953 に答える
2

次の提案を試してください。

1.css仮想パスにキーワードバンドルを使用しないでください。のものに変更し、スクリプトのみにキーワードバンドルを使用してください。このような:

 bundles.Add(new StyleBundle("~/Content/marketingcss")

( content フォルダーの下にmarketingcssというファイルがある場合は、仮想パスを別のものに変更する必要があることを確認する必要があることを忘れないでください。そのため、仮想パスは物理パスと重複してはなりません)

2. _Layout.cshtml で、自分の代わりに次の行を使用します。

 @Styles.Render(BundleTable.Bundles.ResolveBundleUrl("~/Content/marketingcss"))

3.上記の提案がうまくいかなかった場合は、代わりに _Layout.cshtml でこれを試してください。

<link href="@System.Web.Optimization.BundleTable.
               Bundles.ResolveBundleUrl("~/Content/marketingcss")"
               rel="stylesheet"
               type="text/css" /> 

更新しました

bootstarp.css4.バンドルに .min ファイルを入れないことについての友人のコメントを見たところですが、これは正しいので、 budleConfigクラスに .min ファイルを含めてはいけませんbootstrap.min.css。もちろん、他のすべてのファイルは、名前を変更するだけでなく、最初に通常のファイルがあることを確認してください。

コードの修正に役立つことを願っています

于 2014-06-04T22:50:57.657 に答える