ABP理論學習之內嵌資源文件


返回總目錄


本篇目錄

介紹###

在一個web應用中,有供客戶端使用的javascript,css,xml等文件。它們一般是作為分離的文件被添加到web項目中並發布。有時,我們需要將這些文件打包到一個程序集(類庫項目,一個dll文件)中,作為內嵌資源散布到程序集中。ABP提供了一個基礎設施使得這個很容易實現。

創建內嵌文件###

我們首先應該創建一個資源文件並把它標記為內嵌的資源。任何程序集都可以包含內嵌的資源文件。假設我們有一個叫做“Abp.Zero.Web.UI.Metronic.dll”程序集,而且它包含了javascript,css,和圖片文件:

我們想要使這些文件在一個web應用中可用,首先,我們應該將想要暴露的文件標記為內嵌的資源。在這里,我選擇了 metronic.js文件,右鍵打開屬性面板(快捷鍵是F4)。

選中你想在web應用中使用的所有文件,將生成操作(build action)的屬性值選為內嵌的 資源

暴露內嵌文件###

ABP使得暴露這些內嵌資源很容易,只需要一行代碼:

WebResourceHelper.ExposeEmbeddedResources("AbpZero/Metronic", Assembly.GetExecutingAssembly(), "Abp.Zero.Web.UI.Metronic");

這行代碼一般放在模塊的Initialize方法中,下面解釋一下這些參數:

  • 第一個參數為這些文件定義了根文件夾,它匹配了根命名空間。
  • 第二個參數定義了包含這些文件的程序集。本例中,我傳入了包含這行代碼的程序集。但你也可以傳入任何包含內嵌資源的程序集。
  • 最后一個參數定義了這些文件在程序集的根命名空間。它是“默認的命名空間”加上“文件夾名”。默認的命名空間一般和程序集的名字是相同的,但是在程序集的屬性中進行更改。這里 ,默認的命名空間是Abp(已經更改了),因此Metronic文件夾的命名空間是“Abp.Zero.Web.UI.Metronic”。

使用內嵌文件###

可以直接使用內嵌的資源:

<script type="text/javascript" src="~/AbpZero/Metronic/assets/global/scripts/metronic.js"></script>

ABP知道這是一個內嵌的資源,因而可以從之前暴露的dll中獲得文件。此外,還可以在razor視圖中使用HtmlHelper的擴展方法IncludeScript:

@Html.IncludeScript("~/AbpZero/Metronic/assets/global/scripts/metronic.js")

這會產生下面的代碼:

<script src="/AbpZero/Metronic/assets/global/scripts/metronic.js?v=635438748506909100" type="text/javascript"></script>

唯一的不同就是參數v=635438748506909100。這樣做的好處是阻止了瀏覽器端腳本的失敗緩存。該值只有當你的dll重新生成(實際上是文件的最后寫入時間)的時候才會改變,而且如果該值改變了,瀏覽器就不會緩存這個文件了。因此,建議使用IncludeScript方式。這對於非嵌入的物理資源也是有效的。對應於css文件,也存在相應的IncludeStyle方法。


免責聲明!

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



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