ASP.NET MVC プロジェクトがあります。_Layout、コントローラー、およびいくつかのビューがあります。一部のコードは明らかにグローバルです。たとえば、サイト全体で共通の _Layout CSS と CSS は、間違いなくグローバル css ファイルに含まれます。
しかし、スタイルと JavaScript がビューに固有の場合、.cshtml ファイルに含める必要がありますか?それともグローバル ファイルに含める必要がありますか?
ASP.NET MVC プロジェクトがあります。_Layout、コントローラー、およびいくつかのビューがあります。一部のコードは明らかにグローバルです。たとえば、サイト全体で共通の _Layout CSS と CSS は、間違いなくグローバル css ファイルに含まれます。
しかし、スタイルと JavaScript がビューに固有の場合、.cshtml ファイルに含める必要がありますか?それともグローバル ファイルに含める必要がありますか?
すべてのビューに共通するものは、_Layout ファイルに含める必要があります。特定のページ用にカスタム化された CSS と Javascript は、その特定のページにのみロードする必要があります (記述されていませんが、別の .JS または css ファイルからレンダリングされます)。
このようにして、ビュー固有のリソースがバンドルされ、縮小されます
_Layout.cshtml:
<head>
@Styles.Render("~/Content/mastercss")
@Scripts.Render("~/bundles/masterjs")
@RenderSection("header", required: false)
</head>
意見 :
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section header{
@Styles.Render("~/Content/viewspecific")
@Scripts.Render("~/bundles/viewspecific")
}
バンドルは、それらを必要とするページごとに分割する必要があります。たとえば、インターネット アプリケーションの既定の ASP.NET MVC テンプレートは、jQuery とは別に jQuery 検証バンドルを作成します。作成された既定のビューには入力がなく、値がポストされないため、検証バンドルは含まれません。
http://www.asp.net/mvc/overview/performance/bundling-and-minification
レイアウトで RenderSection を介してセクションを定義し、次のようにビューで使用できます。
<head>
<title>@ViewBag.Title</title>
<meta name="viewport" content="width=device-width" />
<script src="~/Content/Scripts/public.js"></script>
@RenderSection("head", false)
</head>
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section head{
<script src="~/Content/Scripts/custom.js"></script>
}