簡體   English   中英

在ASP.NET MVC中管理js和CSS文件

[英]Managing js and css files in ASP.NET MVC

我對ASP.NET MVC 4還是相當陌生,並且想知道ASP.NET包含CSS和JS文件的方式是什么。

背景

在我的PHP項目中,我通常在控制器中包含用於CSS和JS文件名的數組。 這些數組在主模板中傳遞,在該模板中,函數循環通過並生成每個項目的html標簽,並在此時自動對其進行版本控制。 CSS位於<head>而JS位於</body>標記之前。

我知道的事情

  1. BundleConfig(但是,我嚴格關注頁面特定的css / js,而不是全局的)
  2. 在類中創建一些靜態函數,該類在文件列表中傳遞,以相應地生成腳本和鏈接標記

我應該如何從視圖(甚至是控制器)中包含(並可能像BundleConfig一樣自動版本化並縮小)頁面特定的js和css文件?

一種選擇是在布局頁面中使用@RenderSection來實現此目的。 在布局頁面中,您使用布局包括所有頁面@RenderSection的文件和/或包,並使用@RenderSection指定將包含頁面特定文件的占位符(請注意2nd參數= 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>

然后在頁面中,為頁面特定的包和/或文件定義部分

@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>

}

即使沒有一個文件,也沒有理由不能為頁面特定的文件創建捆綁軟件。 好處是,對於您的生產環境,文件將自動縮小(除非您已經在同一文件夾中附加了.min.js的文件)​​。 默認情況下,捆綁包在瀏覽器中緩存(我認為是12個月),如果您編輯文件,則會創建一個新的縮小版本,並將舊版本從瀏覽器緩存中刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM