2011-04-12 4 views
6

Existe-t-il une manière propre d'accéder aux ressources intégrées (css/js/images etc) dans une DLL. Par exemple, à partir d'une page ASPX, peut-on utiliser quelque chose de similaire à ce qui suit?Ressources dll incorporées

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

Répondre

4

Je suggère de jeter un oeil à webresource.axd et la manière dont vous pouvez accéder à des ressources intégrées, comme par exemple ici:

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

vous pouvez obtenir l'url de ressources sur le côté serveur comme ceci:

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

puis le rendre à la page

0

Créer un fournisseur de ressources page ASPX sorcière vérifie un nom de ressource dans la chaîne de requête. extrait ensuite la ressource de DLL et binaire écrit la ressource dans la sortie.

puis l'appeler comme ceci:

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

Merci j'ai regardé WebResource un certain temps, mais ne comprenait pas bien comment cela fonctionnait. Juste eu un autre regard & J'ai maintenant une petite solution bien rangé.

Pour les intéressés, j'ai une classe dans mon dll appelé ressource avec une méthode statique comme suit

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

Après avoir utilisé la directive registre dans ma page maître (ou web.config) Je peux maintenant faire la suivant

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

(reset.css réside dans un dossier appelé styles dans la DLL, d'où Styles.filename.css)


Remarques importantes:

j'ai découvert que le premier argument accepté par GetWebResourceUrl doit être d'une classe au sein du projet dll pas une classe dans la consommation de site Web.

J'ai également eu énormément de difficulté à déterminer le nom qualifié complet correct à utiliser pour la ressource dans le fichier AssemblyInfo.cs. J'ai découvert que mon nom d'assembly n'était pas le même que mon espace de noms par défaut. L'espace de noms par défaut doit être utilisé pour former l'argument 'resourceName' pour GetWebResourceUrl.

Questions connexes