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:
- <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:
- <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í:
- <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:
- <script src='<%=Page.ResolveUrl("~/scripts/MisFunciones.js") %>' type="text/javascript"></script>
Los héroes sin capa si existen!
Muchas gracias, me sirvio de perlas.
Era lo que buscaba