Как указать виртуальный путь для изображения в ASP.Net MVC бритвенный помощник
В моем классе хэнд-класса бритвы (находится в папке App_Code, у меня есть эта строка кода:
<img src="../../Content/images/ajax_activity.gif" alt="loading"/>
Это отлично работает в Cassini, но когда я развертываю приложение в IIS (виртуальный каталог), IIS не может найти путь. Виртуальный путь игнорируется.
Это также не работает:
<img src="@Href("~/Content/images/ajax_activity.gif")" alt="loading" />
Ответы
Ответ 1
ОК, решил, хотя я не совсем уверен, почему он работает. После успешного использования всех следующих комбинаций:
<img src="../Content/images/ajax_activity.gif" alt="loading"/>
<img src="/Content/images/ajax_activity.gif" alt="loading"/>
<img src="~/Content/images/ajax_activity.gif" alt="loading"/>
<img src="Content/images/ajax_activity.gif" alt="loading"/>
следующее, наконец, работало как ожидалось
<img src="./Content/images/ajax_activity.gif" alt="loading"/>
Он правильно вернул путь к изображению с помощью набора виртуальных каталогов. Любой, кто может это объяснить?
Ответ 2
Попробуйте следующее:
<img src="@Url.Content("~/Content/images/ajax_activity.gif")" alt="loading" />
Ответ 3
Вы можете использовать метод @Url.Content
для преобразования виртуального относительного пути в абсолютный путь приложения следующим образом:
<img [email protected]("~/images/picture.png") alt="picture description">
Он будет преобразован в этот HTML-код, отправленный клиенту:
<img src="/appname/images/picture.png" alt="picture description">
UPDATE:
В другой руке вы можете преобразовать изображение в base64, и оно будет отображаться правильно:
<img src="data:image/png;base64,iVBORw0KG...SuQmCC" alt="picture description">
Ответ 4
При развертывании в виртуальном каталоге в IIS корневой каталог приложения может отличаться от того, что вы имели в своей среде разработки.
Если ваш URL приложения si что-то вроде
http://localhost/MyWebApp/
ASP.NET рассмотрит, что root является "localhost", когда он должен быть "MyWebApp".
Чтобы решить эту проблему, вам нужно преобразовать виртуальный каталог в приложение: в диспетчере IIS найдите каталог, щелкните его правой кнопкой мыши, а затем "Преобразовать в приложение".