是否有一种访问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'参数。