¿Cuál es la mejor manera de utilizar ResolveUrl() en un/función 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 no es la mejor manera de llamarlo.

InformationsquelleAutor travis | 2008-08-25

3 Comentarios

  1. 22

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

    Hay al menos una diferencia importante: el Control.ResolveUrl maneja Cadenas de Consulta muy bien, pero causan VirtualPathUtility para lanzar un HttpException. Esto puede ser absolutamente desconcertante la primera vez que sucede, especialmente si estás acostumbrado a la forma en que el Control.ResolveUrl obras.

    Si usted sabe cuál es la estructura 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 es llegar pasado desde una fuente desconocida, a continuación, usted va a necesitar para analizar de alguna manera. (Antes de llegar demasiado profundo en que, tenga en cuenta que el Sistema.Uri podría ser capaz de hacer por usted).

    • Esto puede no ser cierto más. En .NET 4 cuando me evaluar VirtualPathUtility.ToAbsolute("~/bar/baz?qux=123&quux=456", "/foo") puedo obtener /foo/bar/baz?qux=123&quux=456
  2. 3

    Que tienden a usar HttpContext.Actual para conseguir que la página, a continuación, ejecutar cualquier página web y de los métodos de control que.

Dejar respuesta

Please enter your comment!
Please enter your name here