c# asp.net vb.net static resolveurl

resolveurl in class c#



ASP.Net: Utilizando System.Web.UI.Control.ResolveUrl() en una función compartida/estática (3)

Tiendo a utilizar HttpContext.Current para obtener la página, luego ejecuto cualquier página / métodos de control web de eso.

¿Cuál es la mejor manera de usar ResolveUrl () en una función compartida / estática en Asp.Net? Mi solución actual para VB.Net es:

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

O C #:

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

Pero me doy cuenta de que esa no es la mejor manera de llamarlo.


Vale la pena señalar que aunque System.Web.VirtualPathUtility.ToAbsolute es muy útil aquí, no es un reemplazo perfecto para Control.ResolveUrl.

Hay al menos una diferencia significativa: Control.ResolveUrl maneja cadenas de consulta muy bien, pero hacen que VirtualPathUtility genere una HttpException. Esto puede ser absolutamente desconcertante la primera vez que sucede, especialmente si estás acostumbrado a la forma en que funciona Control.ResolveUrl.

Si conoce la estructura exacta de Query String que desea utilizar, esto es bastante fácil de solucionar, a saber:

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

... pero si la cadena de consulta se transfiere desde una fuente desconocida, entonces tendrá que analizarla de alguna manera. (Antes de profundizar en eso, tenga en cuenta que System.Uri podría hacerlo por usted).