Combiner relative baseUri avec chemin relatif
Je suis à la recherche d'un moyen propre à combiner une relative Uri de base avec un autre chemin d'accès relatif. J'ai essayé ce qui suit, mais Uri(Uri, string)
et UriBuilder(Uri)
besoin Uri absolus (en jetant InvalidOperationException: Cette opération n'est pas prise en charge pour un URI relatif).
//where Settings.Default.ImagesPath is "~/path/to/images"
//attempt 1
_imagePath = new Uri(Settings.Default.ImagesPath, image);
//attempt 2
UriBuilder uriBuilder = new UriBuilder(Settings.Default.ImagesPath);
uriBuilder.Path += image;
_imagePath = uriBuilder.Uri;
Je ne veux pas faire tout moche de manipulation de chaîne de assurez-vous que le chemin d'accès de base se termine par une barre oblique, etc.
OriginalL'auteur jrummell | 2011-02-07
Vous devez vous connecter pour publier un commentaire.
C'est encore un peu messier que je le voudrais, mais il fonctionne.
Voici un exemple d'utilisation:
La combinedImageUrl est
~/path/to/images/profile.jpg
OriginalL'auteur jrummell
Essayer:
Ce sera le retour de la chaîne "~/path/to/images/image.jpg".
OriginalL'auteur Carlos Beppler
Tout d'abord, merci pour la réponse sur ce post!
J'ai fait une version simplifiée de la méthode, en sautant de la "complexité" de l'utilisation de la classe Uri. La méthode ne prend que des chaînes comme paramètres et est également retourner une chaîne de caractères.
Code ci-dessus peut être utile pour les autres qui veut exposer une méthode de fournir cette fonctionnalité sans être tributaires soit Uri ou VirtualPathUtility, mais seulement de simples chaînes de caractères.
De cours peut facilement être modifié pour revenir Uri - tout en conservant l'avantage de l'analyse des paramètres de la chaîne:
Utilisation de code ci-dessus des exemples:
OriginalL'auteur Nick Niebling
Un peu plus version généralisée de jrummell réponse qui accepte le premier paramètre à un absolu ou relatif
Uri
est:OriginalL'auteur Dejan
Essayer:
OriginalL'auteur kohlehydrat
Vous pouvez simplement utiliser
Path.Combine(string, string)
pour atteindre cet objectif. Si c'est une URL relative, la sortie sera un peu funky, mais il serait assez facile de corriger ou vous pouvez tout simplement ignorer le problème, et la plupart des usages doivent encore travailler.N'était pas le downvoter, mais il met une barre oblique inverse au lieu d'une barre oblique, pas correct pour les Url. En particulier, ces liens, en fait ne fonctionne pas sur Firefox sur Mac.
Chemin d'accès.Combiner locale chemins d'accès de fichier, pas de Uri
Donc, il y a quelque chose d'aussi simple que de Chemin.Combiner déjà dans le .NET framework?
OriginalL'auteur Nathan Taylor