HTML img и ASP.NET Изображение и относительные пути

Каков правильный способ ссылки на изображение в ASP.NET для прямого развертывания в IIS?

Следующие работы в dev и production:

<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" />

Ответы

Ответ 1

Если вы хотите использовать обычный тег img с контуром ~, вы можете просто добавить runat="server" в тег как атрибут (например, обычные элементы управления сервером), и путь будет разрешен. например:

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

Для вашей второй части используется ссылка../изображения на более чем одной странице, например пользовательская панель управления или главная страница (и т.д.), чтобы вы могли использовать ее на разных уровнях папок...

Ответ 2

~ будет работать только на сервере, например, или. Это говорит ASP.Net вставить путь приложения. Когда-то это просто "/", но если ваше приложение не является корневым каталогом веб-сайта, оно будет содержать путь, в котором он находится. Тег img - это просто html, и он не будет изменен ASP.Net, поэтому браузер получит путь "~/App_Themes/Default/images/two.gif" и не знает, как его прочитать.

Я не знаю, почему последний пример работает в dev, но не в производстве. Это может иметь какое-то отношение к тому, что приложение находится в корневом каталоге в dev, но в подкаталоге в процессе производства.

Ответ 3

Я использую этот синтаксис для доступа к изображениям с мастер-страниц

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

Ответ 4

Это сработало для меня

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

Важно то, что у вас нет "/" в начале вашего нового src.

Ответ 5

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

string base64ImageRepresentation = Convert.ToBase64String(imageArray);