Pregunta

¿Cuál es la mejor manera de utilizar 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.

¿Fue útil?

Otros consejos

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

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

Si conoce la estructura exacta de la cadena de consulta que desea utilizar, es bastante fácil solucionarlo, 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 pasa desde una fuente desconocida, entonces necesitarás analizarla de alguna manera.(Antes de profundizar demasiado en eso, tenga en cuenta que System.Uri podría hacerlo por usted).

Tiendo a usar HttpContext.Current para obtener la página, luego ejecuto cualquier método de control de página/web a partir de ella.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top