Quelle est la bonne façon de référencer une image dans ASP.NET pour un déploiement en direct sur IIS?
Les travaux suivants en développement et production:
<asp:ImageButton ID="ibnEdit" runat="server" OnClick="ibnEdit_Click" ImageUrl="~/App_Themes/Default/images/one.png" Visible="false" ToolTip="Edit" />
Ce qui suit ne marche pas non plus: (pourquoi pas?)
<img src="~/App_Themes/Default/images/two.gif" />
Les travaux suivants en dev mais pas en production:
<img src="../App_Themes/Default/images/two.gif" />
Si vous souhaitez utiliser une balise img
régulière avec le chemin ~
, vous pouvez simplement ajouter runat="server"
dans la balise en tant qu'attribut (comme des commandes de serveur normales) et le chemin sera résolu. par exemple:
<img src="~/App_Themes/Default/images/two.gif" runat="server" />
Pour la deuxième partie, la référence ../image apparaît-elle sur plusieurs pages, par exemple un contrôle utilisateur ou une page maître (etc.), de sorte que vous puissiez l’utiliser à différents niveaux de dossier ...
J'utilise cette syntaxe pour les images d'accès à partir de pages maîtres
<img src="<%=ResolveUrl("~/Content/Images/error_img.jp")%>" width="350" style="padding-right: 15px; padding-top: 20px;"/>
Le ~ ne fonctionnera que sur un contrôle serveur tel que ou. Cela indique à ASP.Net d'insérer le chemin de l'application. Parfois, il ne s’agit que de "/", mais si votre application n’est pas le répertoire racine du site Web, elle inclut le chemin dans lequel elle se trouve. "~/App_Themes/Default/images/two.gif" et ne sait pas comment le lire.
Je ne sais pas pourquoi le dernier exemple fonctionne en dev mais pas en production. Cela peut avoir quelque chose à voir avec le fait que l’application se trouve dans le répertoire racine dans dev mais dans un sous-répertoire en production.
byte[] imageArray = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Upload_Image.png"));
string base64ImageRepresentation = Convert.ToBase64String(imageArray);
Cela a fonctionné pour moi
$ (".sélecteur"). attr ('src', "Contenu/thèmes/base/images/img.png");
L'important est que vous n'ayez pas "/" au début de votre nouveau code src.