.NET MVC4
プロジェクトで@Styles.Render
はどのように機能しますか?
つまり、@Styles.Render("~/Content/css")
では、どのファイルを呼び出しているのでしょうか。
Content
フォルダの中に "css"というファイルやフォルダがありません。
App_Start
フォルダのBundleConfig
クラス内で宣言されているその特定のバンドルに含まれるファイルを呼び出しています。
その場合、@Styles.Render("~/Content/css")
の呼び出しは "〜/ Content/site.css"を呼び出しています。
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
大文字と小文字の区別に注意してください。ファイルがある場合
/Content/bootstrap.css
そしてBundle.configをにリダイレクトします。
.Include( "〜/ Content/Bootstrap.css")
それはCSSをロードしません。
パーティーに少し遅れました。しかし、誰も言及していないようです
バンドリング & 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.css
&Site.css
を縮小
を1つのファイルにまとめます。
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
しかし ..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
Web.config
でdebug
がfalse
に設定されている場合のみ.
それ以外の場合、bootstrap.css
およびSite.css
は個別に配信されます。
バンドルも縮小もされていません:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
src="@url.content("~/Folderpath/*.css")"
はスタイルをレンダリングするべきです
App_start.BundleConfigで定義されているように、それはただ呼び出しています
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
そのセクションを削除しても何も起こりません。
私はMVC 3 Webにバンドルを追加するために必要なすべてのことをしました(私は既存の解決策に新しいです)。 Styles.Render
は私のために働きませんでした。私はついにコロンが行方不明になったことに気づきました。マスターページで:<%: Styles.Render("~/Content/Css") %>
私はまだ(同じページで)<% Html.RenderPartial("LogOnUserControl"); %>
が動作する理由について混乱していますコロンなしで/。
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サイトの構築方法に戻りました。