Pergunta

Eu estou trabalhando em um site que irá mudar para um novo estilo em uma data definida.O site é construído em semântica de HTML e CSS, para que a alteração deve apenas exigir uma referência de CSS a mudança.Estou a trabalhar com um designer que vai precisa para ser capaz de ver como ele procura, bem como um cliente que terá de ser capaz de rever as atualizações de conteúdo no atual aparência, bem como a concepção de progresso sobre a nova aparência.

Eu estou planejando usar uma magia valor de querystring e / ou javascript link no rodapé que grava um cookie para selecionar a nova página CSS.Estamos trabalhando em ASP.NET 3.5.Alguma recomendação?

Devo mencionar que estamos usando o IE Comentários Condicionais para o IE8, 7 e 6 de suporte.Eu posso criar uma função que faz uma substituição:

<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]-->
Foi útil?

Solução

No Asp.net 3.5, você deve ser capaz de definir a tag Link no cabeçalho como um servidor de marca.Em seguida, no code-behind você pode definir a href propriedade para o elemento link, com base em um valor de cookie, querystring, data, etc.

Em seu arquivo aspx:

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

E no Code-behind:

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

Outras dicas

Você deve olhar para ASP.NET temas, que é exatamente o que eles são usados.Eles também permitem que você para pele controles, o que significa dar-lhes um conjunto de atributos padrão.

Gostaria de sugerir armazenar a folha de estilos seleção na sessão, de modo que você não tem que confiar na querystring chave de estar presente o tempo todo.Você pode verificar a sessão no Page_Load e adicione o adequado folha de referência.Parece que este é um temporária/situação de desenvolvimento, então, vá com tudo o que é fácil e funciona.

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

Eu faria o seguinte:

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

Em seguida, no seu ASP.NET código:

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

Então, onde você define suas folhas de estilo:

if (Request.Cookies["stylesheet"] != null) {
    // New Stylesheet
} else {
    // Default
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top