ASP.Net :Utilisation de System.Web.UI.Control.ResolveUrl() dans une fonction partagée/statique

StackOverflow https://stackoverflow.com/questions/26796

Question

Quelle est la meilleure façon d’utiliser ResolveUrl() dans une fonction partagée/statique dans Asp.Net ?Ma solution actuelle pour VB.Net est la suivante :

Dim x As New System.Web.UI.Control
x.ResolveUrl("~/someUrl")

Ou C# :

System.Web.UI.Control x = new System.Web.UI.Control();
x.ResolveUrl("~/someUrl");

Mais je me rends compte que ce n’est pas la meilleure façon de l’appeler.

Était-ce utile?

Autres conseils

Il convient de noter que même si System.Web.VirtualPathUtility.ToAbsolute est très utile ici, il est pas un remplacement parfait pour Control.ResolveUrl.

Il y a au moins une différence significative :Control.ResolveUrl gère très bien les chaînes de requête, mais elles amènent VirtualPathUtility à lever une HttpException.Cela peut être absolument mystifiant la première fois que cela se produit, surtout si vous êtes habitué au fonctionnement de Control.ResolveUrl.

Si vous connaissez la structure exacte de la chaîne de requête que vous souhaitez utiliser, c'est assez simple à contourner, à savoir :

public static string GetUrl(int id)
{
    string path = VirtualPathUtility.ToAbsolute("~/SomePage.aspx");
    return string.Format("{0}?id={1}", path, id);
}

... mais si la chaîne de requête est transmise par une source inconnue, vous devrez l'analyser d'une manière ou d'une autre.(Avant d'approfondir cela, notez que System.Uri pourra peut-être le faire pour vous).

J'ai tendance à utiliser HttpContext.Current pour obtenir la page, puis à exécuter n'importe quelle méthode de contrôle de page/Web à partir de celle-ci.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top