Pregunta

Estoy trabajando en un sitio web que cambiará a un nuevo estilo en una fecha determinada.El sitio está integrado en HTML y CSS semántico, por lo que el cambio solo debería requerir un cambio de referencia de CSS.Estoy trabajando con un diseñador que necesitará poder ver cómo se ve, así como con un cliente que necesitará poder revisar las actualizaciones de contenido en la apariencia actual, así como el progreso del diseño en la nueva apariencia.

Estoy planeando usar un valor de cadena de consulta mágica y/o un enlace de JavaScript en el pie de página que escribe una cookie para seleccionar la nueva página CSS.Estamos trabajando en ASP.NET 3.5.¿Alguna recomendación?

Debo mencionar que estamos usando comentarios condicionales de IE para compatibilidad con IE8, 7 y 6.Puedo crear una función que reemplace:

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

Solución

En Asp.net 3.5, debería poder configurar la etiqueta Enlace en el encabezado como etiqueta de servidor.Luego, en el código subyacente, puede establecer la propiedad href para el elemento de enlace, en función del valor de la cookie, la cadena de consulta, la fecha, etc.

En su archivo aspx:

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

Y en el Código detrás:

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

Otros consejos

Deberías investigar ASP.NET temas, para eso se utilizan exactamente.También le permiten personalizar los controles, lo que significa darles un conjunto de atributos predeterminados.

Sugeriría almacenar la selección de la hoja de estilo en la sesión para que no tenga que depender de que la clave de la cadena de consulta esté presente todo el tiempo.Puede consultar la sesión en Page_Load y agregar la referencia de hoja de estilo adecuada.Parece que esta es una situación temporal/de desarrollo, así que elija lo que sea fácil y funcione.

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

Yo haría lo siguiente:

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

Luego en su código ASP.NET:

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

Luego, donde defines tus hojas de estilo:

if (Request.Cookies["stylesheet"] != null) {
    // New Stylesheet
} else {
    // Default
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top