Javascript 在ASP.NET MVC中管理js和css文件
我对ASP.NETMVC4相当陌生,我想知道ASP.NET包含css和js文件的方式是什么 背景 在我的PHP项目中,我通常在控制器中有CSS和JS文件名的数组。这些数组在主模板中传递,函数在主模板中循环并为每个项目生成html标记,并在此时自动对其进行版本设置。CSS位于Javascript 在ASP.NET MVC中管理js和css文件,javascript,css,asp.net,asp.net-mvc,Javascript,Css,Asp.net,Asp.net Mvc,我对ASP.NETMVC4相当陌生,我想知道ASP.NET包含css和js文件的方式是什么 背景 在我的PHP项目中,我通常在控制器中有CSS和JS文件名的数组。这些数组在主模板中传递,函数在主模板中循环并为每个项目生成html标记,并在此时自动对其进行版本设置。CSS位于中,而JS位于标记之前 我知道的事情 BundleConfig(但是,我严格关注特定于页面的css/js,而不是全局css/js) 在类中创建一些静态函数,该类在文件列表中传递,以相应地生成脚本和链接标记 问题 我应该如何从视
中,而JS位于
标记之前
我知道的事情
我应该如何从视图(甚至控制器)中包含特定于页面的js和css文件(可能包括BundleConfig之类的自动版本和缩小)。一个选项是在布局页面中使用
@RenderSection
。在布局页面中,包括使用布局的所有页面共有的文件和/或捆绑包,并使用@RenderSection
指定将包含页面特定文件的占位符(注意,第二个参数=false
使其成为可选参数)
布局页面
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="~/Content/Common.css" rel="stylesheet" /> // Common .css files here
@RenderSection("styles", false) // Place holder for optional page specific .css files
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<div id="content">
@RenderBody()
</div>
@Scripts.Render("~/bundles/jquery") // Common .js files or bundles
@RenderSection("scripts", required: false) // Place holder for optional page specific .js files or bundles
</body>
</html>
@视图包。标题
//这里是Common.css文件
@RenderSection(“styles”,false)//可选页面特定.css文件的占位符
@Scripts.Render(“~/bundles/modernizer”)
@RenderBody()
@Scripts.Render(“~/bundles/jquery”)//Common.js文件或bundle
@RenderSection(“scripts”,必需:false)//可选页面特定的.js文件或捆绑包的占位符
然后在页面中,定义页面特定捆绑包和/或文件的部分
@model ....
// Page specific html
@section styles {
<link href="~/Content/page-specific-stylesheet.css" rel="stylesheet" />
}
@section Scripts {
@Scripts.Render("~/bundles/page-specific-bundle")
<script src="~/Scripts/page-specific-file.js"></script>
<script type="text/javascript">
// page specific script
</script>
@model。。。。
//特定于页面的html
@剖面样式{
}
@节脚本{
@Scripts.Render(“~/bundles/特定于页面的bundle”)
//页面特定脚本
}
即使只有一个文件,也没有理由不能为页面特定的文件创建捆绑包。其优点是,对于您的生产环境,文件将自动缩小(除非您在同一文件夹中已经有一个附加了.min.js的文件)。默认情况下,捆绑包会缓存在浏览器中(我想是12个月),如果编辑该文件,将创建一个新的缩小版本,并从浏览器缓存中删除旧版本