Domanda

Sto lavorando ad un sito web che passerà ad un nuovo stile in una data prestabilita.Il sito è costruito in HTML e CSS semantici, quindi la modifica dovrebbe richiedere semplicemente una modifica del riferimento CSS.Sto lavorando con un designer che dovrà essere in grado di vedere come appare, così come con un cliente che dovrà essere in grado di rivedere gli aggiornamenti dei contenuti nell'aspetto attuale nonché i progressi della progettazione sul nuovo aspetto.

Ho intenzione di utilizzare un valore magico di querystring e/o un collegamento javascript nel piè di pagina che scrive un cookie per selezionare la nuova pagina CSS.Stiamo lavorando in ASP.NET 3.5.Qualche consiglio?

Dovrei menzionare che stiamo utilizzando i commenti condizionali di IE per il supporto di IE8, 7 e 6.Potrei creare una funzione che esegua una sostituzione:

<link href="Style/<% GetCssRoot() %>.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 8]>
    <link type="text/css" href="Style/<% GetCssRoot() %>-ie8.css" rel="stylesheet" />
<![endif]-->
<!--[if lte IE 7]>
    <link type="text/css" href="Style/<% GetCssRoot() %>-ie7.css" rel="stylesheet" />
<![endif]-->
<!--[if lte IE 6]>
    <link type="text/css" href="Style/<% GetCssRoot() %>-ie6.css" rel="stylesheet" />
<![endif]-->
È stato utile?

Soluzione

In Asp.net 3.5, dovresti essere in grado di impostare il tag Link nell'intestazione come tag del server.Quindi nel codebehind puoi impostare la proprietà href per l'elemento link, in base al valore di un cookie, querystring, data, ecc.

Nel tuo file aspx:

<head>
  <link id="linkStyles" rel="stylesheet" type="text/css" runat="server" />
</head>

E nel Codice dietro:

protected void Page_Load(object sender, EventArgs e) {
  string stylesheetAddress = // logic to determine stylesheet
  linkStyles.Href = stylesheetAddress;
}

Altri suggerimenti

Dovresti esaminare ASP.NET temi, è esattamente ciò per cui vengono utilizzati.Ti permettono anche di personalizzare i controlli, il che significa dare loro una serie di attributi predefiniti.

Suggerirei di memorizzare la selezione del foglio di stile nella sessione in modo da non dover fare affidamento sulla costante presenza della chiave querystring.Puoi controllare la sessione in Page_Load e aggiungere il riferimento al foglio di stile appropriato.Sembra che questa sia una situazione temporanea/di sviluppo, quindi scegli ciò che è facile e funziona.

if (!String.IsNullOrEmpty(Request.QueryString["css"]))
  Session.Add("CSS",Request.QueryString["css"]);

Farei quanto segue:

www.sitoweb.com/?stylesheet=new.css

Quindi nel tuo codice ASP.NET:

if (Request.Querystring["stylesheet"] != null) {
    Response.Cookies["stylesheet"].Value = Request.QueryString["stylesheet"];
    Response.Redirect(<Current Page>);
}

Quindi dove definisci i tuoi fogli di stile:

if (Request.Cookies["stylesheet"] != null) {
    // New Stylesheet
} else {
    // Default
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top