Ressources et Images - C#/.NET managed - Programmation
Marsh Posté le 05-10-2007 à 13:50:34
Je doute qu'il existe une solution toute faite.
Le plus simple est donc d'ajouter à ta DLL une page CS (un autre contrôle utilisateur peut-être) nommé "LoadResource".
Ce contrôle attends en QueryString le nom de l'icône.
Il recherche l'image correspondante dans les recources du projet, et retourne avec un Response.BinaryWrite() le contenu binaire du fichier, et en header ce qu'il faut pour que ça corresponde au format du fichier.
Ensuite, dans ton contrôle principal, tu indiques juste l'url de ta page avec le bon paramètre :
Code :
|
Il y a peut-être moyen de faire plus simple, mais cette solution devrait fonctionner sans problème, donc à défaut de mieux...
Marsh Posté le 05-10-2007 à 14:13:42
Testé et approuvé :
TestBtn.ascx :
Code :
|
TestBtn.ascx.cs :
Code :
|
LoadResource.aspx
Code :
|
LoadResource.aspx.cs :
Code :
|
Main.master :
Code :
|
Résultat :
Marsh Posté le 05-10-2007 à 14:16:43
Par contre, t'as parfaitement le droit de dire que...
Code :
|
C'est bien du bordel pour afficher une bête image
- Extraction du fichier de la DLL vers la mémoire avec décodage de la compression
- Réencodage de la compression et recopie en mémoire dans un stream
- Recopie du stream en mémoire dans un array de byte
- Recopie du array de byte vers le outputstream
Marsh Posté le 05-10-2007 à 14:22:09
Et normalement je peut inclure une page aspx dans une Web Control Library?
Marsh Posté le 05-10-2007 à 14:23:07
Ca, aucune idée. J'espère que oui
Je trouve pas ce type de projet dans mon vs... Alors du coup j'ai juste fais ça dans un site.
Marsh Posté le 05-10-2007 à 14:27:45
Ca se trouve sous Visual C# - Windows
Ben oui je pige pas non plus pourquoi ils l ont mis la...
Marsh Posté le 05-10-2007 à 14:30:43
Ca y est, j'ai trouvé.
(planqué dans les projets "windows"... pige pas trop pkoi c'est pas dans "web"...)
-- grillaid en fait --
Ca marche comment ton bouzin ?
Marsh Posté le 05-10-2007 à 14:34:12
Simplement ma classe est la suivante. puis tu compile, tu ajouter la dll que tu viens de compiler dans ton Design Panel et ensuite comme un control normal tu fait un drag and drop dans ta page web
Code :
|
Marsh Posté le 05-10-2007 à 14:35:06
Par contre je viens d essayer et je pense pas que l on puisse mettre de page aspx
Au besoin mini tuto pour le Server Web Control: http://www.techheadbrothers.com/Ar [...] nfirmation
Marsh Posté le 05-10-2007 à 14:39:52
Bon, effectivement, t'es mal, je vois pas du tout comment tu peux faire.
(pourquoi tu passes par ce truc ? ç'a m'a l'aire bien compliqué pour pas grand chose ce bignou)
Marsh Posté le 05-10-2007 à 14:42:11
Par contre, je pense à un truc.
Certains sites fonctionnent de la façon suivante :
http://domaine/toto.dll?methodname [...] 1=coincoin
=> et ça lance plop(coincoin) qui est une méthode située dans la dll
Je suppose que ton salut se trouve dans cette "solution". Reste à trouver comment la mettre en place
ceci dit, c'est gore, parceque ça oblige à exposer la DLL dans path public (donc sujet aux attaques) et ça oblige à travailler avec un nom de dll et un chemin d'accès à cette dernière qui soit figé... donc source de pas mal de problèmes de dépoliement.
deplus, pour "exécuter une dll" cela nécessite d'avoir IIS paramétré en mode "autoriser l'exécution d'exécutable", ce qui est une faille potentielle très importante : un petit malin uploade un EXE sur ton serveur, et zou, il a juste à taper l'url où le fichier a été déposé pour démarrer le programme sur le serveur... je te laisse imaginer les ravages que ça peut faire si l'admin du serveur n'a aucune expérience dans la sécurisation
Marsh Posté le 05-10-2007 à 14:44:38
Pourquoi je passe par ca? Ben pour créer vraiment un user control que je pourrai intégrer facilement sur tout mes site et mon but est de le rendre totalement libre donc que d autres personne puissent égelement en profiter et sans devoir se prendre la tete.
Marsh Posté le 05-10-2007 à 14:48:08
Mais donc non ca ne fonctionne pas trop avec ta solution snif surtout que j avais utilisé la meme methode pour créer mes images Thumbs (tu m avais d ailleur aidé aussi il y a qq jours) et du coup j en revient au point de départ!
Marsh Posté le 05-10-2007 à 14:48:34
Je crois que tu te feras moins chier en rendant l'accès aux images paramétrage...
autre solution, tu stockes les images sur un serveur public et tu hardcode leur chemin d'accès dans la dll.
mais bon c'est très très moyen
Marsh Posté le 05-10-2007 à 14:55:22
LOL. Non mais ca veut dire que
- soit je ne le met pas en dll donc on doit chaque fois copier
- le user control
- la page de génération de Thumbs
- les icones
- soit j arrive à créer par une autre methode en gardant ma dll (je voit pas trop comment) et on a juste à intégrer la dll, on peut le prendre en mode design, le jour ou je fait un changement je doit pas changer tout les site, il suffit de redeployer la dll.
Marsh Posté le 05-10-2007 à 15:27:57
Whoooooo ca fonctionne. Ils expliquent ici : http://aspnet.4guysfromrolla.com/a [...] 906-1.aspx comment faire pour embarquer une ressource et il suffit d adapter un peu pour faire de meme avec des images.
Marsh Posté le 05-10-2007 à 15:42:30
Et hop un petit post sur mon blog en francais pour les alergiques à l anglais: http://www.pharmacommerce.be/blog/ [...] ns-le-code
Merci pour ton aide en tt cas!
Marsh Posté le 05-10-2007 à 11:35:27
Bonjour,
J'ai créé un Web Server Control, enfin un Composite Control pour etre précis.
Mais j aimerais pouvoir mettre des icones qui serait inclus dans la dll de manière à ce que les utilisateurs ne doivent pas se préoccuper des icones du tout mais que tout soit dans cette dll.
J'ai donc mit les images dans un fichier ressources mais appres comment attribuer mon Image à un ImageButton?
D'avance merci
Ben
Message édité par the big ben le 05-10-2007 à 13:29:09