2011-04-12 21 views
6

¿Hay una forma limpia de acceder a los recursos incrustados (css/js/images, etc.) dentro de un dll.Recursos dll incorporados

Por ejemplo, desde una página aspx, ¿se puede usar algo similar a lo siguiente?

<script type="text/javascript" src="<%= ResolveUrl("~/My.Dll.Namespace.File.js") %>"></script>

Respuesta

4

sugeriría a echar un vistazo a WebResource.axd y la manera cómo se puede acceder a los recursos integrados, como por ejemplo aquí:

http://weblogs.asp.net/jeff/archive/2005/07/18/419842.aspx

se puede obtener la URL del recurso en el lado del servidor de la siguiente manera:

Page.ClientScript.GetWebResourceUrl(typeof(MyNameSpaces.MyControl), "MyNameSpaces.Resources.MyImage.gif") 

y luego preséntela en la página

0

crear un proveedor de recursos Aspx Página bruja comprobará si hay un nombre de recurso en la cadena de consulta. luego recupera recursos de dll y binary escribe el recurso en salida.

entonces lo llaman así:

<script type="text/javascript" 
    src="ResourceProvider.aspx?name=My.Dll.Namespace.File.js"></script> 
3

Gracias. Hace un tiempo eché un vistazo a WebResource pero no entendía del todo cómo funcionaba. Acabo de ver otra vez & Ahora tengo una pequeña solución ordenada.

Para los interesados, que tienen una clase en mi DLL llamada de recursos con un método estático de la siguiente manera

public static string Get(Page p, string file) { 
    return p.ClientScript.GetWebResourceUrl(typeof(Resource), typeof(Resource).Namespace + ".Resources." + file); 
} 

Después de usar la directiva de registro en mi página maestra (o web.config) ahora puedo hacer lo siguiente

<link href="<%= Resource.Get(this.Page, "Styles.reset.css") %>" rel="stylesheet" type="text/css" /> 

(reset.css reside dentro de una carpeta llamada Estilos en la DLL, de ahí Styles.filename.css)


Notas importantes:

descubrí que el primer argumento aceptado por GetWebResourceUrl debe ser de una clase dentro del proyecto DLL no una clase dentro de consumir sitio web.

También tuve una tremenda dificultad para determinar el nombre completo calificado correcto para utilizar para el recurso en el archivo AssemblyInfo.cs. Descubrí que el nombre de mi ensamblado no era el mismo que mi espacio de nombres predeterminado. El espacio de nombre predeterminado se debe usar para formar el argumento 'resourceName' para GetWebResourceUrl.

Cuestiones relacionadas