是否有一種訪問dll內部的嵌入式資源(css/js/images等)的乾淨方式。嵌入式dll資源
例如,從一個aspx頁面,可以使用類似於下面的東西嗎?
<script type="text/javascript" src="<%= ResolveUrl("~/My.Dll.Namespace.File.js") %>"></script>
是否有一種訪問dll內部的嵌入式資源(css/js/images等)的乾淨方式。嵌入式dll資源
例如,從一個aspx頁面,可以使用類似於下面的東西嗎?
<script type="text/javascript" src="<%= ResolveUrl("~/My.Dll.Namespace.File.js") %>"></script>
我建議看看WebResource.axd的以及如何訪問嵌入資源,喜歡的方式,例如這裏:
http://weblogs.asp.net/jeff/archive/2005/07/18/419842.aspx
你可以像這樣得到服務器端的資源url:
Page.ClientScript.GetWebResourceUrl(typeof(MyNameSpaces.MyControl), "MyNameSpaces.Resources.MyImage.gif")
然後渲染它在頁面上
創建資源提供商ASPX頁面女巫將檢查查詢字符串資源名稱。然後從DLL檢索資源,二進制將資源寫入輸出。
然後調用它像這樣:
<script type="text/javascript"
src="ResourceProvider.aspx?name=My.Dll.Namespace.File.js"></script>
謝謝我看了一下WebResource,但沒有完全理解它是如何工作的。只是再看一眼&我現在有一個整潔的小解決方案。
對於那些有興趣,我有我的DLL中的類調用資源與靜態方法如下
public static string Get(Page p, string file) {
return p.ClientScript.GetWebResourceUrl(typeof(Resource), typeof(Resource).Namespace + ".Resources." + file);
}
在我的母版頁(或web.config文件)使用寄存器指令後,現在我可以做以下
<link href="<%= Resource.Get(this.Page, "Styles.reset.css") %>" rel="stylesheet" type="text/css" />
(reset.css在DLL駐留在文件夾中稱爲樣式內,因此Styles.filename.css)
注意事項:
我發現,通過GetWebResourceUrl的接受第一個參數必須DLL項目不內消耗的網站類中的一類。
我也很難確定用於AssemblyInfo.cs文件中的資源的正確的完全限定名。我發現我的程序集名稱與我的默認名稱空間不一樣。應該使用默認名稱空間來形成GetWebResourceUrl的'resourceName'參數。