2009-12-09 41 views

Respuesta

63

ResolveUrl crea la URL relativa a la raíz.

ResolveClientUrl crea la URL relativa a la página actual.

También puede usar el que desee, sin embargo, ResolveUrl se usa más comúnmente.

13

De acuerdo con la documentación de MSDN:

ResolveClientUrl

una dirección URL completa a la especificada recursos adecuados para su uso en el navegador .

utilizar el método de ResolveClientUrl a devolver una cadena URL adecuado para su uso por el cliente para acceder a los recursos en el servidor Web, tales como archivos de imagen, enlaces a páginas adicionales, y así sucesivamente.

ResolveUrl

El URL convertida.

Si el parámetro relativeUrl contiene una URL absoluta, la URL se devuelve sin cambios. Si el parámetro relativeUrl contiene una URL relativa, esa URL se cambia a una URL relativa que sea correcta para la ruta de solicitud actual, de modo que el navegador pueda resolver la URL.

Por ejemplo, consideremos el siguiente escenario :

Un cliente ha solicitado una página ASP.NET que contiene un control de usuario que tenga una imagen asociada a ella.

La página de ASP.NET se encuentra en /Store/page1.aspx.

El control de usuario se encuentra en /Store/UserControls/UC1.ascx.

El archivo de imagen se encuentra en /UserControls/Images/Image1.jpg.

Si el control de usuario pasa el ruta relativa a la imagen (es decir, /Store/UserControls/Images/Image1.jpg) con el método ResolveUrl, el método devolverá el valor /images/Image1 .jpg.

Creo que esto lo explica bastante bien.

+37

Si MSDN explicara bien la diferencia, yo no estaría aquí. –

+1

¡Creo que la documentación de MSDN es terrible y es por eso que estoy aquí! la mayoría de las personas entenderían "URL completamente calificada" para indicar una URL absoluta – Andy

31

Aquí está un ejemplo sencillo:

//Returns: ../HomePage.aspx 
String ClientURL = ResolveClientUrl("~/HomePage.aspx"); 

//Returns: /HomePage.aspx 
String RegURL = ResolveUrl("~/HomePage.aspx"); 

//Returns: C:\inetpub\wwwroot\MyProject\HomePage.aspx 
String ServerMappedPath = Server.MapPath("~/HomePage.aspx"); 

//Returns: ~/HomePage.aspx 
String appRelVirtPath = AppRelativeVirtualPath; 

//Returns: http://localhost:4913/ 
String baseUrl = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath; 

//Returns: "http://localhost:4913/HomePage.aspx" 
String absUri = Request.Url.AbsoluteUri; 
+0

¿Podría agregar alguna explicación textual de su ejemplo? –

2

En resumen:

Page.ResolveUrl(~): creates the URL from the root of app. 

y

Page.ResolveClientUrl(~): creates the URL relative to the current page.(e.g: ../../..) 

pero en mis pruebas en asp.net, Page.ResolveUrl es mejor debido a la salida estable & no es relativa.

Cuestiones relacionadas