文檔目錄 本節內容: 簡介 創建嵌入的文件 暴露嵌入的文件 使用嵌入的文件 簡介 一個web應用里,客戶端包含javascript,css,xml等文件,這此文件被添加到一個web項目後,發佈成獨立的文件,有時,我們需要把一些這樣的文件打包入一個程式集(一個類庫項目,一個Dll文件),並且作為嵌入式 ...
本節內容:
一個web應用里,客戶端包含javascript,css,xml等文件,這此文件被添加到一個web項目後,發佈成獨立的文件,有時,我們需要把一些這樣的文件打包入一個程式集(一個類庫項目,一個Dll文件),並且作為嵌入式資源文件部署在這個程式集里,ABP提供了一個基礎架構,方便地處理這件事。
我們首先要創建一個資源文件並把它標記為嵌入式資源,任何程式集都可以包含嵌入式資源文件,假設我們有一個名為“Abp.Zero.Web.UI.Metronic.dll”的程式集,它包含javascript,css和圖片文件:
我們想要在一個web應用里使用這些文件,首先,我們應該把想要暴露的文件的Build Action(生成操作)修改為Embedded Resource(嵌入的資源),我選擇metronic.js文件,轉到屬性視窗(快捷鍵為F4)並修改它。
你應該在一個Web應用里,把所有你想要使用的文件的生成操作修改為嵌入的資源。
ABP可以很容易地暴露嵌入的資源文件,只一行代碼:
WebResourceHelper.ExposeEmbeddedResources("AbpZero/Metronic", Assembly.GetExecutingAssembly(), "Abp.Zero.Web.UI.Metronic");
這段代碼通常放在模塊的Initial方法里,讓我們解釋一下它的參數:
- 第一個參數定義文件的根目錄,它與根命名空間匹配。
- 第二個參數定義程式集包含的文件,在這個例子里,我傳遞了包含這段代碼的程式集,但是你可以傳遞任何包含嵌入式資源的程式集。
- 最後一個參數定義了在這個程式集里這些文件的根命名空間,它是“預設命名空間”+“在這個程式集里的目錄”,預設命名空間通常與程式集名相同,但可以在程式集的屬性里修改,這裡,預設的命名空間是Abp(我修改了它),所以Metronic目錄的命名空間是“Abp.Zero.Web.UI.Metronic"。
可以直接使用嵌入的文件:
<script type="text/javascript" src="~/AbpZero/Metronic/assets/global/scripts/metronic.js"></script>
ABP可以理解這是一個嵌入的文件並獲取所有之前Dll暴露的文件,雖然它可以簡單地工作,你可以在一個Razor視圖裡使用ABP的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方法。