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