Is there a clean way of accessing embedded resources (css/js/images etc) inside a dll.
For example, from an aspx page, can something similar to the below be used?
<script type="text/javascript" src="<%= ResolveUrl("~/My.Dll.Namespace.File.js") %>"></script>
Is there a clean way of accessing embedded resources (css/js/images etc) inside a dll.
For example, from an aspx page, can something similar to the below be used?
<script type="text/javascript" src="<%= ResolveUrl("~/My.Dll.Namespace.File.js") %>"></script>
3 Answers
Reset to default 4I would suggest to take a look at WebResource.axd and the way how you can access embedded resources, like for example here:
http://weblogs.asp/jeff/archive/2005/07/18/419842.aspx
you can get the resource url on server side like this:
Page.ClientScript.GetWebResourceUrl(typeof(MyNameSpaces.MyControl), "MyNameSpaces.Resources.MyImage.gif")
and then render it on page
Thanks I had a look at WebResource a while back but didn't fully understand how it worked. Just had another look & I've now got a tidy little solution.
For those interested, I have a class in my dll called Resource with a static method as follows
public static string Get(Page p, string file) {
return p.ClientScript.GetWebResourceUrl(typeof(Resource), typeof(Resource).Namespace + ".Resources." + file);
}
After using the register directive in my master page (or web.config) I can now do the following
<link href="<%= Resource.Get(this.Page, "Styles.reset.css") %>" rel="stylesheet" type="text/css" />
(reset.css resides within a folder called Styles in the dll, hence Styles.filename.css)
Important Notes:
I discovered that the first argument accepted by GetWebResourceUrl must be of a class within the dll project not a class within consuming website.
I also had tremendous difficulty determining the correct fully qualified name to use for the resource in the AssemblyInfo.cs file. I discovered that my assembly name was not the same as my default namespace. The default namespace should be used to form the 'resourceName' argument for GetWebResourceUrl.
Create a Resource Provider Aspx Page witch will check for a resource name in query string. then retrieves resource from dll and binary writes the resource in output.
then call it like this :
<script type="text/javascript"
src="ResourceProvider.aspx?name=My.Dll.Namespace.File.js"></script>
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745076874a4609886.html
评论列表(0条)