URL-адрес URL-адреса ASP MVC и изображений относительного пути

У меня есть страница ASP.NET MVC, где я пытаюсь показать дружественные URL.

Итак, у меня есть представление категории в Home Controller, которое принимает значение категорииKey для получения содержимого страницы.

Например: http://localhost/Home/Category/Bikes получает содержимое велосипеда.

в моем Global.asax.cs, для этого я должен выполнить следующее:

public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

  routes.MapRoute(
      "Category",
      "{controller}/{action}/{categoryKey}",
      new { controller = "Home", action = "Category", categoryKey = "" });

  routes.MapRoute(
      "Default", // Route name
      "{controller}/{action}/{id}", // URL with parameters
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
  );
}

Это работает очень хорошо, и он получает контент, однако я получаю контент из системы управления контентом для упрощения редактирования. Когда вы добавляете изображение в управление контентом, оно добавляет изображение с относительным путем:

<img src="../AdminUploadContent/bikes.gif" alt="Bikes" />

Теперь, если я goto " http://localhost/Home/Category", и этот тег изображения находится на базовой странице, он подтянет изображение. Однако, если я перейду " http://localhost/Home/Category/" или добавьте фактическую категорию "/Home/Category/Bikes" /, изображение не будет" t появляется. Свойства изображения указывают на " http://localhost/Home/AdminUploadContent/bikes.gif ".

Есть ли что-нибудь, что я могу добавить в файл Global.aspx.cs для обработки относительного пути? Даже если я вручную отредактирую управление контентом, чтобы добавить.. /../AdminUploadContent/bikes.gif, он отрубает первый. /, так как он выполняет некоторую проверку.

Ответы

Ответ 1

Используйте метод Url.Content при создании пути к вашему изображению.

<img src="@Url.Content("~/AdminUploadContent/bikes.gif")" />

или при использовании механизма просмотра WebForms:

<img src="<%= Url.Content("~/AdminUploadContent/bikes.gif") %>" />

Ответ 2

Вы можете использовать относительный путь "~/" для ссылки на текущий виртуальный каталог, на котором находится страница. Попробуйте добавить атрибут runat = "server" к тэгам "img" и "~" в атрибуте "src":

<img runat="server" src="~/AdminUploadContent/bikes.gif" alt="Bikes" />

Ответ 3

Вы можете реализовать пользовательский http-модуль, который будет переписывать путь из относительного.. /../img.png для необходимой обработки HTTP-заголовка Referer, например.

Ответ 4

Это тоже работает.

<img src="@Url.Content("~/Images/yourimage.png")"/>