web-dev-qa-db-ja.com

HTML imgおよびASP.NETイメージと相対パス

IISでライブ展開するためにASP.NETでイメージを参照する正しい方法は何ですか?

以下は、開発および本番環境で機能します。

<asp:ImageButton ID="ibnEdit" runat="server" OnClick="ibnEdit_Click" ImageUrl="~/App_Themes/Default/images/one.png" Visible="false" ToolTip="Edit" />

以下はどちらでも動作しません:(なぜ動作しないのですか?)

<img src="~/App_Themes/Default/images/two.gif" />

以下はdevでは機能しますが、本番環境では機能しません。

<img src="../App_Themes/Default/images/two.gif" />
16
mmmbop

~パスで通常のimgタグを使用する場合は、runat="server"を属性として(通常のサーバーコントロールのように)タグに追加するだけで、パスが解決されます。例えば:

<img src="~/App_Themes/Default/images/two.gif" runat="server" /> 

2番目の部分は、複数のページに表示される../画像参照です。たとえば、ユーザーコントロールやマスターページなどで、異なるフォルダーレベルで使用している可能性があります...

24
davidsleeps

この構文を使用して、マスターページから画像にアクセスします

<img src="<%=ResolveUrl("~/Content/Images/error_img.jp")%>" width="350" style="padding-right: 15px; padding-top: 20px;"/>
6
Chris Rosete

〜はまたはなどのサーバーコントロールでのみ機能します。これは、アプリケーションパスを挿入するようASP.Netに指示します。時々、それは単に "/"ですが、アプリケーションがWebサイトのルートディレクトリではない場合、そのパスが含まれます。imgタグはhtmlであり、ASP.Netによって変更されないため、ブラウザがパスを取得します"〜/ App_Themes/Default/images/two.gif"と読み方がわかりません。

最後の例がdevでは機能するが、本番環境では機能しない理由がわかりません。アプリケーションがdevのルートディレクトリにあるが、本番環境のサブディレクトリにあることと関係がある可能性があります。

5
liserdarts
byte[] imageArray = System.IO.File.ReadAllBytes(Server.MapPath("~/Images/Upload_Image.png"));

string base64ImageRepresentation = Convert.ToBase64String(imageArray);
0
nikunjM

これは私のために働いた

$( "。selector")。attr( 'src'、 "Content/themes/base/images/img.png");

重要なのは、新しいsrcの先頭に「/」がないことです。