_Layout.cshtmlファイルに.cssファイルを設定する方法は知っていますが、ビューごとにスタイルシートを適用するのはどうですか?
ここでの私の考えは、_Layout.cshtmlには操作する<head>
タグがありますが、非レイアウトビューの1つではそうではないということです。<link>
タグはどこに行くのですか?
_Layout.cshtmlファイルに.cssファイルを設定する方法は知っていますが、ビューごとにスタイルシートを適用するのはどうですか?
ここでの私の考えは、_Layout.cshtmlには操作する<head>
タグがありますが、非レイアウトビューの1つではそうではないということです。<link>
タグはどこに行くのですか?
回答:
サイト全体で再利用されるCSSについては、の<head>
セクションで定義します_Layout
。
<head>
<link href="@Url.Content("~/Styles/main.css")" rel="stylesheet" type="text/css" />
@RenderSection("Styles", false)
</head>
ビュー固有のスタイルが必要な場合はStyles
、各ビューのセクションを定義します。
@section Styles {
<link href="@Url.Content("~/Styles/view_specific_style.css")" rel="stylesheet" type="text/css" />
}
編集:@RenderSectionの2番目のパラメーターであるfalseは、このマスターページを使用するビューではセクションが不要であることを意味し、ビューエンジンは「スタイル」セクションが定義されていないという事実を穏やかに無視することを知っていると便利です。あなたの見解で。trueの場合、ビューはレンダリングされず、「スタイル」セクションが定義されていない限りエラーがスローされます。
RenderSection
ヘッダーの最後ではなく、呼び出した場所(驚くほど:)にレンダリングされます。
私はそのようにブロックを追加してみました:
@section styles{
<link rel="Stylesheet" href="@Href("~/Content/MyStyles.css")" />
}
そして、_Layout.cshtmlファイル内の対応するブロック:
<head>
<title>@ViewBag.Title</title>
@RenderSection("styles", false);
</head>
うまくいきました!しかし、私には仕方がありませんが、もっと良い方法があると思います。更新:@RenderSection
ステートメントに「false」を追加したため、@section
呼び出されたの追加を怠ったときにビューが飛散しないようになりましたhead
。
"Head"
。
@RenderSection()
。良いキャッチ。
使用する
@Scripts.Render("~/scripts/myScript.js")
または
@Styles.Render("~/styles/myStylesheet.css")
あなたのために働くことができます。
レイアウトはマスターページと同じように機能します。レイアウトに含まれるCSS参照、子ページに含まれるすべてのCSS参照。
この構造はLayout.cshtmlファイルで作成できます
<link href="~/YourCssFolder/YourCssStyle.css" rel="stylesheet" type="text/css" />