У меня Url.Content()
фрагментов везде в моих представлениях. Они отлично работают на страницах с простым URL-адресом, но не тогда, когда URL-адрес становится длиннее.
Вот пример:
<img src="@Url.Content("~/Content/Images/logo.png")" id="logo">
Это отлично работает, когда я нахожусь на домашней странице или на странице с URL-адресом localhost:8080/s/chocolate
(который показывает результат поиска «шоколад».
Но когда я пытаюсь добавить некоторые уточнения, например. localhost:8080/s/chocolate/b/lindt
(что означает отфильтровать предыдущие результаты только от бренда Lindt), это больше не работает. В данном случае Url.Content
указывает на /s/chocolate/Content/Images/logo.png
, что явно не работает.
Как будто Url.Content
поднимается только на 2 уровня вверх по текущему местоположению вместо того, чтобы использовать настоящий корень веб-приложения. Я предполагаю, что в соглашении имеет смысл указывать URL-адреса в форме хост/контроллер/действие, но здесь у меня более сложная схема URL-адресов (я использую модуль перезаписи URL-адресов, чтобы сопоставить эти фрагменты URL-адресов с параметрами действия). ).
Есть ли способ указать помощнику перейти к настоящему корню или какое-либо другое решение этой проблемы?
(Кстати, я использую MVC 4)
EDIT: Как ответил Фелипе, я только что обнаружил, что Url.Content больше не нужен с MVC 4. Это работает для всех изображений «дизайна» с постоянным путем. Однако я использую много изображений, где путь построен частично с некоторыми данными, например.
<img src="@Url.Content(string.Format("~/Content/Images/stores/{0}.png", cart.Store.Retailer.Id))"/>
Я просто удалил Url.content как таковой:
<img src="@string.Format("~/Content/Images/stores/{0}.png", Model.PreferedCart.Store.Retailer.Id)"/>
При рендеринге это дает следующий src: ~/Content/Images/stores_v2/Fr_SimplyMarket.png
. ~
все еще здесь, изображение не найдено. Как я могу это исправить?