I have an ASP.NET MVC page, where I am trying to show friendly URL's.
So, I have a Category View in the Home Controller, that accepts a categoryKey value to get the content of the page.
For instance: http://localhost/Home/Category/Bikes gets the bike content.
in my Global.asax.cs, i have the following to handle this:
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
);
}
This works just fine, and it gets the content, however, I am getting the content from a Content Management system, for easy editing. When you add an image on the content management, it adds the image with a relative path:
<img src="../AdminUploadContent/bikes.gif" alt="Bikes" />
Now, if i goto "http://localhost/Home/Category", and that image tag is on the base page, it will pull up the image. However, if i goto "http://localhost/Home/Category/", or add the actual category of "/Home/Category/Bikes"/, the image doesn't show up. The properties of the image is pointing to "http://localhost/Home/AdminUploadContent/bikes.gif".
Is there anything I can put in my Global.aspx.cs file to handle the relative path? Even if i manually edit the content management to add ../../AdminUploadContent/bikes.gif, it is chopping off the first ../, since it is doing some validation.
Use the Url.Content method when generating a path to your image.
<img src="@Url.Content("~/AdminUploadContent/bikes.gif")" />
or if using the WebForms view engine:
<img src="<%= Url.Content("~/AdminUploadContent/bikes.gif") %>" />