MVC學習隨筆----如何在頁面中添加JS和CSS文件


http://blog.csdn.net/xxjoy_777/article/details/39050011

1.如何在頁面中添加Js和CSS文件。

我們只需要在模板頁中添加JS和CSS文件,然后子頁面調用模板頁即可。

@{
    ViewBag.Title = "用戶注冊";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

第二句話便是指定該頁面的模板頁。我們只需要在模板頁中進行js和css的引用。

 

下面來看_Layout.cshtml的代碼。

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. @Styles.Render("~/Css")  
  2. @Scripts.Render("~/bundles/modernizr")  
  3. @Scripts.Render("~/bundles/jquery")  
  4. @RenderSection("scripts", required: false)  


第一條的作用是引入了一個捆綁的css文件,第二個引入一個捆綁的modernizr文件,modernizr是一個javascript文件庫,它主要作用是為了兼容各類瀏覽器之間的差異。第三條語句引入一個捆綁的jquery文件。第四條語句@renderSection的作用是在模板頁中占用一個位置,這個位置的名字就叫做scripts,然后讓用戶在子頁面中去呈現這個叫做scripts的Section。false的意思是在子頁面中並不要求一定要實現這個Section的呈現。關於@RenderSection的更多知識,可以參考這里。http://blog.csdn.net/xxjoy_777/article/details/39050667

 

值得注意的是,這些引用語句中的路徑並不是真實在我們項目文件中的路徑,比如我們的項目中並沒有~/Css、~、bundles/modernizr這樣的文件。那么文件到底在什么地方呢?

是通過App_start中的BundleConfig.cs來設置的。打開App_start中的Bundleconfig.cs文件,可以看到如下代碼:

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. public class BundleConfig  
  2.    {  
  3.        // 有關 Bundling 的詳細信息,請訪問 http://go.microsoft.com/fwlink/?LinkId=254725  
  4.        public static void RegisterBundles(BundleCollection bundles)  
  5.        {  
  6.            bundles.Add(new ScriptBundle("~/bundles/jQuery").Include(  
  7.                        "~/Scripts/jquery-{version}.js"));  
  8.   
  9.            bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(  
  10.                        "~/Scripts/jquery-ui-{version}.js", "~/Scripts/jquery.ui.datepicker-zh-CN.js", "~/Scripts/jquery.layout-latest.js"));  
  11.   
  12.            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(  
  13.                        "~/Scripts/jquery.unobtrusive*",  
  14.                        "~/Scripts/jquery.validate*"));  
  15.   
  16.            bundles.Add(new ScriptBundle("~/bundles/kindeditor").Include(  
  17.                        "~/Scripts/kindeditor/kindeditor-min.js", "~/Scripts/kindeditor/lang/zh_CN.js"));  
  18.   
  19.            bundles.Add(new ScriptBundle("~/bundles/ztree").Include(  
  20.                        "~/Scripts/Ztree/jquery.ztree.core-{version}.js"));  
  21.   
  22.            //Admin  
  23.   
  24.            // 使用 Modernizr 的開發版本進行開發和了解信息。然后,當你做好  
  25.            // 生產准備時,請使用 http://modernizr.com 上的生成工具來僅選擇所需的測試。  
  26.            bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(  
  27.                        "~/Scripts/modernizr-*"));  
  28.   
  29.            bundles.Add(new StyleBundle("~/Css").Include("~/Content/Default/Style.css"));  
  30.            bundles.Add(new StyleBundle("~/UserCss").Include("~/Content/Default/User/Style.css"));  
  31.            //bundles.Add(new StyleBundle("~/AdminCss").Include("~/Content/Admin/Style.css"));  
  32.            //bundles.Add(new StyleBundle("~/EasyUi/icon").Include("~/Scripts/EasyUi/themes/icon.css"));  
  33.            bundles.Add(new StyleBundle("~/JqueryUiMetro").Include("~/Content/JqueryUi/Metro/jquery-ui-{version}.css"));  
  34.            bundles.Add(new StyleBundle("~/ZtreeCss").Include("~/Content/zTree/Default.css"));  
  35.            //Admin  
  36.            bundles.Add(new StyleBundle("~/Css/Admin").Include("~/Areas/Admin/Content/Style.css"));  
  37.            //bundles.Add(new StyleBundle("~/Css/Admin/Easyui").Include("~/Areas/Admin/Content/Easyui/icon.css", "~/Areas/Admin/Content/Easyui/metro-blue/easyui.css"));  
  38.        }  
  39.    }  


看了上面的代碼,應該很容易明白bundles的運行機制,new ScriptBundle().include().前面的括號里的路徑是虛擬路徑,而后面的是真實的路徑,我們發現,真實路徑里的有時候並不一定只是一個文件,還有可能是一個文件組。比如

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. bundles.Add(new ScriptBundle("~/bundles/jQuery").Include("~/Scripts/jquery-{version}.js"));  

綁定的就是各個版本的jQuery

 

這樣,假如我們的一個頁面引用了模板頁,那么這個頁面也就引用了模板頁中添加的CSS和Jquery文件。我們來看看頁面運行后的源文件。

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. <link href="/Content/Default/Style.css" rel="stylesheet"/>  
  2.   
  3. <script src="/Scripts/modernizr-2.6.2.js"></script>  
  4.   
  5. <script src="/Scripts/jquery-2.0.3.js"></script>  

這是頁面源文件,可以看到css和js文件都已經添加進去了。

另外,因為我們子頁面中有一句:

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. @section Scripts {  
  2.     @Scripts.Render("~/bundles/jqueryval")  
  3. }  

這一句通過

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. @Scripts.Render("~/bundles/jqueryval")  

來填充模板頁中的@RenderSection部分,所以我們還引用了虛擬路徑為~/bundles/jqueryval的腳本文件。

 

所以,網頁的源文件里,還有下面幾句。

    <script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>

只要看看bundle.cs的源碼就可以知道是為什么了。

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(  
  2.                        "~/Scripts/jquery.unobtrusive*",  
  3.                        "~/Scripts/jquery.validate*"));  

這兩句指定了所添加的文件是

 

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. "~/Scripts/jquery.unobtrusive*"和<pre code_snippet_id="463872" snippet_file_name="blog_20140904_3_3751162" name="code" class="html">"~/Scripts/jquery.validate*"  

 

 
        

這兩個文件中包含了源文件中所列出的那三個文件。*的意思應該是指這類文件的集合。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM