2008-08-25 12 views

Respuesta

3

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

21

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 cadenas de consulta muy bien, pero hacen que VirtualPathUtility arroje 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 la cadena de consulta que desea utilizar, esto es bastante fácil de evitar, 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 está aprobada en de una fuente desconocida entonces vas a necesitar analizarlo de alguna manera. (Antes de profundizar en eso, tenga en cuenta que System.Uri podría hacerlo por usted).

+0

Esto puede no ser cierto más. En .NET 4 cuando evalúo 'VirtualPathUtility.ToAbsolute (" ~/bar/baz? Qux = 123 & quux = 456 ","/foo ")' obtengo '/ foo/bar/baz? Qux = 123 & quux = 456' –

Cuestiones relacionadas