5

そのため、MVC4ではスクリプトとスタイルのバンドルが導入されています。これはこれを可能にします:

public static void RegisterBundles(BundleCollection bundles)
    {
    bundles.Add(new ScriptBundle("~/bundles/mobile").Include(
                    "~/Scripts/jquery.mobile-*"));

次に、次のようなかみそりのビューで使用されます。

@Scripts.Render("~/bundles/mobile")

私の質問は、なぜ入力する必要があるのか​​ということ"~/bundles/mobile"です。強く型付けされたオブジェクトを取得するためのインテリジェンスを取得する方法はありますか?それ以外の場合は、同じものと呼んでいることを確認するために調べに行く必要があります。

私はこのようなことをしたいと思います:(これはこのようにコンパイルされないことを私は知っています、それは単なる例です)

public static void RegisterBundles(BundleCollection bundles)
    {
    Bundle mobile = new Bundle("mobile");
    mobile.AddFile("w/e")
    bundles.Add(mobile);

//in page:
 @Scripts.Render(BundleConfig.mobile)

またはそれに影響を与える何か。

編集:答えはとても簡単です。@Hao Kung指摘するように@Styles.Render、単にURL文字列パスを取ります。パスを保持するクラスを作成しました。

public class bundles
{
    #region Javascript
    public static string scripts = "~/bundles/scripts";
    ...
    #endregion

    #region CSS

    public static string css = "~/Content/css";
    public static string jqueryUi = "~/Content/themes/base/css";
    ...
    #endregion
}

どのページでも、あなたは単にします

@Styles.Render(bundles.jqueryUi)

そこにあります。あなたの側で少し余分な努力がありますが、少なくとも今は強く型付けされています。

4

1 に答える 1

2

レンダースクリプト/スタイルレンダーヘルパーは、バンドルへの参照のレンダリングに限定されず、任意のURLを解決します。したがって、ヘルパーがバンドルを参照するつもりであることを検出する唯一の方法は、バンドルの仮想パスを渡すことです。

于 2012-06-20T22:10:19.983 に答える