#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") %>" />