是否有一种干净的方式来访问dll中的嵌入式资源(css / js / images等)。
例如,从aspx页面可以使用类似下面的内容吗?
<script type="text/javascript" src="<%= ResolveUrl("~/My.Dll.Namespace.File.js") %>"></script>
答案 0 :(得分:4)
我建议您查看 WebResource.axd 以及访问嵌入资源的方式,例如:
http://weblogs.asp.net/jeff/archive/2005/07/18/419842.aspx
您可以在服务器端获取资源网址,如下所示:
Page.ClientScript.GetWebResourceUrl(typeof(MyNameSpaces.MyControl), "MyNameSpaces.Resources.MyImage.gif")
然后在页面
上呈现它答案 1 :(得分:3)
谢谢我前一段时间看过WebResource但是并没有完全理解它是如何工作的。刚看了一眼&amp;我现在有一个整洁的小解决方案。
对于那些感兴趣的人,我在我的dll中有一个名为Resource的类,其静态方法如下
public static string Get(Page p, string file) {
return p.ClientScript.GetWebResourceUrl(typeof(Resource), typeof(Resource).Namespace + ".Resources." + file);
}
在我的母版页(或web.config)中使用register指令后,我现在可以执行以下操作
<link href="<%= Resource.Get(this.Page, "Styles.reset.css") %>" rel="stylesheet" type="text/css" />
(reset.css位于dll中名为Styles的文件夹中,因此Styles.filename.css)
重要说明:
我发现GetWebResourceUrl接受的第一个参数必须是dll项目中的一个类而不是消费网站中的一个类。
我在确定要用于AssemblyInfo.cs文件中的资源的正确完全限定名称时遇到了极大的困难。我发现我的程序集名称与我的默认名称空间不同。应使用默认命名空间来形成GetWebResourceUrl的“resourceName”参数。
答案 2 :(得分:0)
创建资源提供程序Aspx Page将检查查询字符串中的资源名称。然后从dll中检索资源,二进制文件在输出中写入资源。
然后这样称呼:
<script type="text/javascript"
src="ResourceProvider.aspx?name=My.Dll.Namespace.File.js"></script>