URL conviviales MVC ASP et images de chemin relatif
J'ai un ASP.NET MVC page, où j'essaie de montrer amical URL.
Donc, j'ai un Affichage des catégories dans la Maison de Contrôleur, qui accepte un categoryKey valeur pour obtenir le contenu de la page.
Par exemple: http://localhost/Home/Category/Bikes obtient le vélo de contenu.
dans mon Global.asax.cs, j'ai le texte suivant pour le gérer:
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
);
}
Cela fonctionne bien, et il obtient le contenu, cependant, je reçois le contenu à partir d'un système de Gestion de Contenu, pour faciliter l'édition. Lorsque vous ajoutez une image sur la gestion de contenu, il ajoute l'image avec un chemin relatif:
<img src="../AdminUploadContent/bikes.gif" alt="Bikes" />
Maintenant, si je goto "http://localhost/Home/Category", et que la balise d'image est sur la page de base, il va tirer vers le haut de l'image. Cependant, si je goto "http://localhost/Home/Category/", ou ajoutez la catégorie de "/Home/Category/Vélos"/, l'image ne s'affiche pas. Les propriétés de l'image pointe vers "http://localhost/Home/AdminUploadContent/bikes.gif".
Est-ce que je peux mettre dans mon Global.aspx.cs fichier pour gérer le chemin relatif? Même si je modifier manuellement la gestion de contenu à ajouter ../../AdminUploadContent/bikes.gif il est de hacher de la première ../, depuis qu'il est en train de faire la validation de certains.
source d'informationauteur doug
Vous devez vous connecter pour publier un commentaire.
Utiliser le Url.Contenu méthode lors de la génération d'un chemin d'accès à votre image.
ou si vous utilisez les Formulaires moteur d'affichage:
Vous pouvez utiliser le chemin relatif "~/" pour désigner le répertoire virtuel actuel où la page se trouve. Essayez d'ajouter runat="server" attribut à votre "img" et la balise de "~" signe dans l'attribut "src":
Vous pouvez mettre en œuvre un module http personnalisé qui va réécrire le chemin de la relative ../../img.png nécessaires à la manipulation de l'en-tête http Referer, par exemple.
Cela fonctionne aussi.