2014-06-08 22 views
0

我對ASP.NET MVC 4相當陌生,想知道包含css和js文件的ASP.NET方式是什麼。管理ASP.NET MVC中的js和css文件

背景

在我的PHP項目,我通常有CSS和JS文件名生活在控制器陣列。這些數組在主模板中傳遞,函數在其中循環併爲每個項目生成html標記,並在此處自動對它們進行版本化。 CSS位於<head>,而JS位於</body>標籤之前。

事情我知道的

  1. 的BundleConfig(不過,我很嚴格關注特定頁面的CSS/JS不是全球性的)
  2. 在一個類中創建一些靜態函數傳遞在文件列表來生成腳本和鏈接標籤相應

問題

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

回答

1

一個選項是在您的佈局頁面中使用@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> 

然後,在頁中,定義章節的頁面特定束和/或文件

@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個月),如果您編輯文件,則會創建一個新的縮小版本,並從瀏覽器緩存中刪除舊版本。