ResolveUrl/ResolveClientUrl des équivalents de trésorerie pour Asp.Net Rasoir?
J'ai donc commencé à utiliser le <%: Url.Content(~/site/blah) %>
syntaxe standard pour le CSS, JScript et de l'Image url - résout beaucoup de questions en effet; et c'est au moins cohérent entre les Formulaires web et les pages Razor (pas tous mes devs vont faire de Rasoir, et pourtant, ils seront toujours à travailler sur cette plateforme que j'ai produites).
Toutefois, pour quelque chose que je fais en ce moment, je pouvais vraiment faire avec un moyen de prendre une Url relative écrit dans un Rasoir page et, au moment de l'exécution, résoudre à du bon côté serveur de fichier, avant de se tourner de nouveau dans une Url absolue pour le client. Url.Content
ne pas faire n'importe quoi avec les Url relatives.
Donc, fondamentalement, je veux que ce soit un équivalent de ResolveUrl
ou ResolveClientUrl
au Rasoir niveau.
Je tiens cela pour permettre terser (et plus tolérant au changement de nom de ressource de chemins d'accès dans certains de mes vues MVC, qui peut être un peu de dossiers plus bas à partir de la racine, et dont le contenu du dossier serait plus facilement exprimé comme un chemin d'accès relatif - si je pouvais avoir:
folder\folder\views\shared\layout.cshtml
folder\folder\content\site.css
(J'ai déduit de l'utilisation d'un modèle de page, également, de mettre en miroir le genre de questions qui sont abordées par ResolveUrl et la re-fonder que WebForms ne)
À l'aide de Url.Content
comme il est, j'aurais besoin de spécifier le chemin d'accès complet:
Url.Content("~/folder/folder/content/site.css")
Mais ce que je voudrais, c'est
Url.Content("../../site.css")
Et avoir ce travail, de cours, peu importe la façon dont de nombreux chemins il y a dans la requête en cours de route.
Bien sûr, je peux obtenir que cela fonctionne dans les WebForms, si je fossé de l'Url.Contenu de l'appel et s'appuient sur l'url complet.
Est-il équivalent au Rasoir?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer d'utiliser WebPageRenderingBase.Href méthode comme ceci
Si vous êtes à la conversion ASP.NET application ASP.NET MVC, étape par étape, vous pouvez utiliser des emballages:
Vous pouvez ResolveClientUrlPageWrapper de classique ASP.NET page ou ResolveClientUrlHttpServerUtilitybasewrapper de ASP.NET MVC contrôleur, ResolveClientUrlUrlHelperWrapper de ASP.NET MVC Vue. Vous aurez le même arrière-plan de code à travers l'ensemble de la ASP.NET classique et ASP.NET application MVC.
En général, je le fais de cette façon dans mon code javascript.