web-dev-qa-db-ja.com

MVC4でのStyles.Render

.NET MVC4プロジェクトで@Styles.Renderはどのように機能しますか?

つまり、@Styles.Render("~/Content/css")では、どのファイルを呼び出しているのでしょうか。

Contentフォルダの中に "css"というファイルやフォルダがありません。

372
Ricardo Polo

App_StartフォルダのBundleConfigクラス内で宣言されているその特定のバンドルに含まれるファイルを呼び出しています。

その場合、@Styles.Render("~/Content/css")の呼び出しは "〜/ Content/site.css"を呼び出しています。

bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
448
NunoCarmo

大文字と小文字の区別に注意してください。ファイルがある場合

/Content/bootstrap.css

そしてBundle.configをにリダイレクトします。

.Include( "〜/ Content/Bootstrap.css")

それはCSSをロードしません。

34
linktoemi

パーティーに少し遅れました。しかし、誰も言及していないようです
バンドリングStyleBundleの縮小 なので、..

@Styles.Render("~/Content/css") 

Application_Start()を呼び出します。

BundleConfig.RegisterBundles(BundleTable.Bundles);            

それは順番に呼び出す

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new StyleBundle("~/Content/css").Include(
              "~/Content/bootstrap.css",
              "~/Content/Site.css"));
}

RegisterBundles()は効果的に&を組み合わせてbootstrap.cssSite.cssを縮小
を1つのファイルにまとめます。

<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">

しかし ..

<system.web>
  <compilation debug="false" targetFramework="4.6.1" />
</system.web>

Web.configdebugfalseに設定されている場合のみ.
それ以外の場合、bootstrap.cssおよびSite.cssは個別に配信されます。
バンドルも縮小もされていません:

<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
10
SAm

src="@url.content("~/Folderpath/*.css")"はスタイルをレンダリングするべきです

0
Ram

App_start.BundleConfigで定義されているように、それはただ呼び出しています

bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));

そのセクションを削除しても何も起こりません。

0
Sathish Dadi

私はMVC 3 Webにバンドルを追加するために必要なすべてのことをしました(私は既存の解決策に新しいです)。 Styles.Renderは私のために働きませんでした。私はついにコロンが行方不明になったことに気づきました。マスターページで:<%: Styles.Render("~/Content/Css") %>私はまだ(同じページで)<% Html.RenderPartial("LogOnUserControl"); %>が動作する理由について混乱していますコロンなしで/。

0
dudeNumber4

Polo私はMVCでBundlesを使用しないことにはいくつかの理由があります。 Apps_StartフォルダにカスタムBundleConfigクラスを設定する必要があるため、これはうまくいきません。あなたが単純にあなたのHTMLの頭の中にスタイルを追加することができるとき、これは意味がありません:

<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />

すべてのビューから呼び出されて各ページにドロップされるLayout.cshtmlまたは部分クラスにこれらを追加することもできます。スタイルが変わった場合は、再コンパイルしなくても名前とパスを簡単に変更できます。

クラスにCSSへのハードコードされたリンクを追加することは、同様にUIとデザインをアプリケーションモデルから切り離すという全体的な目的で壊れます。また、ハードコードされたスタイルシートパスをc#で管理することは望ましくありません。これは、「スキン」や別のデバイス、テーマなどを言うための個別のスタイルモデルを構築できなくなるためです。

<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />

このシステムとRazorを使用して、データベースまたはユーザー設定からスキンパスを切り替え、パスを動的に変更するだけでWebサイト全体のデザインを変更できます。

15年前のCSSの全体的な目的は、サイト用のユーザー制御スタイルシートとアプリケーション制御スタイルシートの両方のスタイルスキン「スキン」を開発することでした。 ....例えば印刷可能なバージョン、モバイル、オーディオバージョン、生のxmlなど.

C#クラス、Bootstrapのような厳格なスタイルを使用し、サイトのテーマとアプリケーションコードをマージすることによって、1998年のWebサイトの構築方法に戻りました。

0
Stokely