Tengo un Master Page en el fólder raíz de mi aplicación ASP.NET.
Tengo un CSS también en el fólder raíz.
En el Master Page, mando llamar al CSS de la siguiente forma:

  1. <link href="Estilo.css" rel="stylesheet" type="text/css" />

Ahora bien, tengo una página llamada Default.aspx en el fólder raíz y otra llamada Dos.aspx en una carpeta. Las dos páginas están basadas en el Master Page. En la página Default.aspx el CSS se carga sin problemas. En la página Dos.aspx el CSS no se carga porque la aplicación no está reescribiendo la ruta del CSS, y no lo encuentra dentro de la carpeta.

Intenté esto:

  1. <link href="~/Estilo.css" rel="stylesheet" type="text/css" runat="server" />

¡Pero no funciona!

Estuve investigando y encontré la manera de hacerlo funcionar, es así:

  1. <link href='<%=Page.ResolveUrl("~/Estilo.css") %>' rel="stylesheet" type="text/css"></link>

La instrucción Page.ResolverUrl reescribe toda la ruta, sin importar en qué carpeta, sub-carpeta, sub-sub-carpeta, etc. estemos. Esto es genial ya que si un día mueves tu aplicación a un fólder virtual o a un dominio distinto, no tendrás que preocuparte por modificar estas referencias.

Lo mejor de todo es que funciona donde sea, por ejemplo:

  1. <script src='<%=Page.ResolveUrl("~/scripts/MisFunciones.js") %>' type="text/javascript"></script>

2 comentarios sobre “Trabajando con subcarpetas, CSS y Master Pages usando Page.ResolveUrl

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


dos × 4 =