~/ не запускается в корне приложения

#asp.net

#asp.net

Вопрос:

Я знаю, что это может быть основным вопросом, но это сводит меня с ума. У меня есть asp.net (4.0 framework) приложение, над которым я работаю. У меня есть главная страница в корневом каталоге и вторичная главная страница в подкаталоге. Вторичная главная страница наследует главную страницу сайта.

Проблема в том, что, хотя я использовал ~/ для описания местоположения ресурса («<img src=»~/Images/myImage.jpg » />) они не загружаются.
Используя консоль в firebug, я получаю следующую ошибку: «Ошибка сети: 404 не найдено — http://localhost:4601/Account /~/Images/myImage.jpg »

Что мне нужно сделать, чтобы правильно переводить ресурсы с главной страницы на главную страницу во вложенных папках? И что я неправильно понимаю в «~ /»?

Комментарии:

1. Если я правильно помню, ~ работает только для серверных элементов управления. Вы не можете использовать его для статического html.

Ответ №1:

Использование

 <img src="~/Images/myImage.jpg" />
  

Смешивает HTML-код с .Чистый ASP-код. Тильда (~) не является частью разметки HTML, и именно поэтому она не создает то, что вы хотите.

Чтобы это заработало, вам нужно изменить исходный код с помощью тега <% %>, который позволит вам добавить ASP-код, который будет переведен в HTML-код при обработке.

 <img src="<%= Page.ResolveUrl("~/Images/myImage.jpg") %>" />
  

Внутри ASP.NET тег, вы должны использовать ResolveUrl, который преобразует URL-адрес во что-то, что HTML сможет понять.

Если вы не хотите использовать этот трюк, вы также можете использовать вместо тега HTML img ASP.NET управление изображением. Это автоматически приведет к выполнению ResolveUrl

 <asp:Image runat="server" ID="imgHelp"  ImageUrl="~/Images/myImage.jpg" />
  

Ответ №2:

 <img src="<%= Page.ResolveUrl("~/Images/myImage.jpg") %>" />
  

или

 <img src="<%= Control.ResolveUrl("~/Images/myImage.jpg") %>" />