2

これを行う方法はありますか?

バンドルの利点のいくつかは次のとおりです。

  • 最小化
  • Gzip 圧縮
  • 要求には、ファイルのバージョン (キャッシュ) を処理するためのトークン パラメーターがあります。

私のサイトでは多くのバンドルを使用していますが、一部のページではスクリプトが 1 つしかないため、スクリプト 1 つだけのバンドルを作成する必要はないと思います。この 3 つの利点をメソッドで使用する方法はありますかUrl.Content

私の理想的な解決策は、(おそらく web.config で) 何かを設定することであり、 Url.Content が呼び出されるたびに、この機能が追加されます。次のいずれかの方法で使用します。

<script type="text/javascript" src="@Url.Content("~/Scripts/...")"></script>
<script type="text/javascript" src="~/Scripts/..."></script>

(2つ目はRazor 2を使用しているためです)

それが不可能な場合は、UrlHelper に拡張メソッドを作成して、この機能を追加できます。

ありがとう!

4

1 に答える 1

1

縮小化とバージョン管理の利点を得るために 1 つのファイルでバンドルを作成することは、特に問題はありません。Scripts.Render ヘルパーも使用する必要があります。現在、UrlHelper ではこれをサポートしていませんが、既に述べたように、拡張メソッドを記述して Scripts ヘルパーを呼び出すことができます。

更新(OPによる)

これを使用したい人のための私の拡張メソッドは次のとおりです。

public static IHtmlString DynamicScriptsBundle(this HtmlHelper htmlHelper, string nombre, params string[] urls)
{
    string path = string.Format("~/{0}", nombre);
    if (BundleTable.Bundles.GetBundleFor(path) == null)
        BundleTable.Bundles.Add(new ScriptBundle(path).Include(urls));
    return Scripts.Render(path);
}

public static IHtmlString DynamicStylesBundle(this HtmlHelper htmlHelper, string nombre, params string[] urls)
{
    string path = string.Format("~/{0}", nombre);
    if (BundleTable.Bundles.GetBundleFor(path) == null)
        BundleTable.Bundles.Add(new StyleBundle(path).Include(urls));
    return Styles.Render(path);
}
于 2012-10-30T17:05:46.720 に答える