Se utilizzate nei vostri progetti sia tecniche di url rewriting che i nuovi temi di ASP.NET 2, vi sarete accorti che questi, soprattutto per quanto riguarda i css, nn vengono caricati correttamente, in quanto mantengono il percorso originario presente nella pagina effettivamente servita.
Quindi, nella root dell'applicazione potrebbe andare tutto bene, mentre nelle sottodirectory il riferimento ai file css viene perso.
E' possibile però, scrivere del codice per evitare che tutto ciò accada, e dare ad ogni pagina il percorso assoluto dei file css. Questo codice va inserito all'interno del metodo Render di una classe custom che eredita da Page, e che dovrà essere da ora in poi la classe da cui derivano tutte le pagine della vostra applicazione.
namespace Peppe.Web.UI
{
public class BasePage : Page
{
public BasePage()
{ }
protected override void Render(HtmlTextWriter writer)
{
foreach (Control control in Page.Header.Controls)
{
HtmlLink link;
link = control as HtmlLink;
if ((link != null) && link.Href.StartsWith("~/"))
{
if (Request.ApplicationPath == "/")
link.Href = link.Href.Substring(1);
else
link.Href = Request.ApplicationPath + "/" + link.Href.Substring("~/".Length);
}
}
base.Render(writer);
}
}
}