Вопрос

Я работаю над веб-сайтом, который в определенный день перейдет на новый стиль.Сайт встроен в семантический HTML и CSS, поэтому для изменения достаточно просто изменить ссылку CSS.Я работаю с дизайнером, которому нужно будет видеть, как оно выглядит, а также с клиентом, которому нужно будет иметь возможность просматривать обновления контента в текущем виде, а также ход разработки нового оформления.

Я планирую использовать значение магической строки запроса и/или ссылку Javascript в нижнем колонтитуле, которая записывает файл cookie для выбора новой страницы CSS.Мы работаем в ASP.NET 3.5.Есть рекомендации?

Следует упомянуть, что мы используем условные комментарии IE для поддержки IE8, 7 и 6.Я могу создать функцию, которая выполняет замену:

<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]-->
Это было полезно?

Решение

В Asp.net 3.5 вы сможете настроить тег Link в заголовке как тег сервера.Затем в коде программной части вы можете установить свойство href для элемента ссылки на основе значения cookie, строки запроса, даты и т. д.

В вашем файле aspx:

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

И в Кодексе позади:

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

Другие советы

Вам следует изучить ASP.NET темы, это именно то, для чего они используются.Они также позволяют создавать обложки для элементов управления, что означает присвоение им набора атрибутов по умолчанию.

Я бы предложил сохранить выбор таблицы стилей в сеансе, чтобы вам не приходилось полагаться на постоянное присутствие ключа строки запроса.Вы можете проверить сеанс в Page_Load и добавить соответствующую ссылку на таблицу стилей.Похоже, это временная ситуация/ситуация развития, поэтому делайте то, что легко и работает.

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

Я бы сделал следующее:

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

Затем в вашем коде ASP.NET:

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

Затем вы определяете свои таблицы стилей:

if (Request.Cookies["stylesheet"] != null) {
    // New Stylesheet
} else {
    // Default
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top