Url.Contenu() ne fonctionne pas sur des Url complexes
J'ai Url.Content()
extraits de partout dans mes vues. Ils fonctionnent très bien sur les pages avec une URL simple, mais pas lorsque l'URL est plus longue.
Voici un échantillon:
<img src="@Url.Content("~/Content/Images/logo.png")" id="logo">
Cela fonctionne très bien lorsque je suis sur la page d'accueil ou une page avec l'URL localhost:8080/s/chocolate
(ce qui montre le résultat pour le "chocolat" de recherche.
Mais quand je suis en train d'ajouter quelques raffinements, par exemple localhost:8080/s/chocolate/b/lindt
(ce qui signifie filtrer les résultats précédents, à seulement ceux de la marque Lindt), il ne fonctionne plus. Dans ce cas, Url.Content
points de /s/chocolate/Content/Images/logo.png
, qui, évidemment, ne parvient pas.
C'est comme si Url.Content
va seulement 2 niveaux jusqu'à l'emplacement actuel au lieu d'utiliser la vraie racine de l'application web. Je suppose que cela a du sens dans la convention que les URLs sont de la forme hôte/controller/action, mais ici, j'ai de plus en plus complexes schéma d'URL (j'utilise l'URL rewriter module pour correspondre à ces URL fragments à l'action de paramètres).
Est-il une manière de dire l'aide à aller à la racine réelle, ou de toute autre solution à ce problème?
(BTW, je suis en utilisant MVC 4)
EDIT:
Felipe a répondu, je viens de découvrir que l'Url.Le contenu n'est plus nécessaire avec MVC 4. Qui fonctionne pour tous "design" des images avec un chemin constant. Cependant, j'utilise beaucoup d'images où le chemin se construit en partie avec certaines données, par exemple
<img src="@Url.Content(string.Format("~/Content/Images/stores/{0}.png", cart.Store.Retailer.Id))"/>
J'ai tout simplement supprimé l'Url.le contenu, en tant que tel:
<img src="@string.Format("~/Content/Images/stores/{0}.png", Model.PreferedCart.Store.Retailer.Id)"/>
Lors du rendu, ce qui donne la suite src: ~/Content/Images/stores_v2/Fr_SimplyMarket.png
. Le ~
d'être encore ici, l'image n'est pas trouvée. Comment puis-je régler ce problème?
OriginalL'auteur Antoine | 2013-07-08
Vous devez vous connecter pour publier un commentaire.
Dans ASP.NET MVC 4+, vous n'avez pas besoin d'utiliser
Url.Content
dans les valeurs d'attribut. Utiliser le~/
syntaxe directement et laisser rasoir moteur d'affichage 2 processus le chemin pour vous. Afin que vos exemples peuvent être codé comme suit:Dans le cas où vous avez besoin pour créer une dynamique de trajectoire, donc, vous avez à utiliser
Url.Content
, pour l'échantillon:Si cela ne fonctionne pas, la raison en est parce que vous avez des problèmes avec votre URL rewriter.
Ne fonctionne pas dans les balises meta.
OriginalL'auteur Felipe Oriani