cómo representar la ruta relativa con tilde en ../../ de la ruta relativa en jquery / javascript?

Bueno, entiendo que mi título es un poco confuso. Lo expressé claramente debajo con el ejemplo.

 

En html, el control anterior se representará como

  

Me doy cuenta de que, convertirá el src de “~” a “../../”. Se arregla automáticamente que será el nivel del archivo.

entonces en javascript, quiero configurar el control con esta url:

~ / Presentación / Recursos / Imágenes / PDF.png

desafortunadamente, en html se representará como

  

Mi pregunta es: ¿Qué debo escribir si quiero obtener la ruta relativa “../../” con “~”? He intentado esto, pero no puedo entenderlo.

  document.getElementById("").src = "~/Presentation/Resources/Images/PDF.png";  

Pruebe esto: http://weblogs.asp.net/joelvarty/archive/2009/07/17/resolveurl-in-javascript.aspx

En la página maestra del sitio, coloca esto:

  

Luego, en su archivo javascript, ponga esta función:

 function ResolveUrl(url) { if (url.indexOf("~/") == 0) { url = baseUrl + url.substring(2); } return url; } 

Podrías haber puesto la función en la página maestra, pero no tendrías inteligencia sobre ella para el rest de tu código. Ahora puede llamar a ResolveUrl con ~ / derecha desde javascript.

¿Por qué lo necesitas en el lado del cliente? Utilice los controles de runat=server ( runat=server ) y puede usar tilde para resolver la URL en el servidor.

En realidad, las URL con tilde se convierten a URL absoluta gracias a los métodos: ResolveURL y ResolveClientURL

Por lo tanto, deberías poder hacer esto:

 " style="border-width:0px;"> 

(Esto se hace automáticamente para usted en Web Controls como HyperLink y tal)

La gran diferencia con esos dos métodos ocurre cuando usas controles de usuario. En un caso, la URL se refiere a la URL relativa a la carpeta donde está el control de usuario, en el otro caso, esa sería la página que contiene el control de usuario.

Ver también esta pregunta: Control.ResolveUrl versus Control.ResolveClientUrl versus VirtualPathUtility.ToAbsolute

WebControls traduce la tilde en la ruta correcta cuando se ejecuta en el servidor antes de representar el html, necesitará usar la ruta completa o la ruta relativa en jQuery si está cambiando el src sobre la marcha.

Es posible que desee tener una propiedad en la página con la ruta raíz, por ejemplo: ApplicationRootURL y hacer algo como esto:

  

Eche un vistazo a VirtualPathUtility Class y a esta información de msdn sobre las rutas del proyecto ASP.NET .

El método VirtualPathUtility.ToAppRelative es probablemente lo que estás buscando.

VirtualPathUtility.ToApp Relative

Si la ruta virtual para la aplicación es “myapp” y la ruta virtual “/myApp/sub/default.asp” se pasa al método ToAppRelative, la ruta relativa a la aplicación resultante es “~ / sub / default.aspx”.

Explica y da ejemplos sobre cómo convertir entre diferentes formatos de ruta.

También creo que debería generar la ruta correcta a nivel del servidor en lugar de la ingeniería inversa en javascript en el navegador. Puede causar problemas si reorganiza su proyecto y asp lo cambia.