Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ASP.NET MVC中管理js和css文件_Javascript_Css_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript 在ASP.NET MVC中管理js和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) 在类中创建一些静态函数,该类在文件列表中传递,以相应地生成脚本和链接标记 问题 我应该如何从视

我对ASP.NETMVC4相当陌生,我想知道ASP.NET包含css和js文件的方式是什么

背景

在我的PHP项目中,我通常在控制器中有CSS和JS文件名的数组。这些数组在主模板中传递,函数在主模板中循环并为每个项目生成html标记,并在此时自动对其进行版本设置。CSS位于
中,而JS位于
标记之前

我知道的事情

  • BundleConfig(但是,我严格关注特定于页面的css/js,而不是全局css/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个月),如果编辑该文件,将创建一个新的缩小版本,并从浏览器缓存中删除旧版本