2013-09-26 63 views
0

我想基於cookie有條件地呈現頁面中的CSS。在我的服務器端,我檢測cookie並將cookie值存儲在變量中,現在在aspx頁面中,我想借助if else logic根據存儲在代碼後面的變量中的cookie值呈現css。如何在頁面中有條件地呈現CSS

假設在我的.cs代碼後面我存儲cookie值如strCountryCookie="GB"和我的aspx頁面我試圖呈現基於存儲在變量中的cookie值的if else logic css。

所以這裏是我嘗試的方式。

<% 
if(strCountryCookie=="DE") 
{ %> 
#acloginpod { 
    width:380px; 
    background:#ebebeb url(../images/acloginpodbg.gif) repeat-x; 
    border:1px solid #d3d3d3; 
    -webkit-border-radius:7px; 
    -moz-border-radius:7px; 
} 
<% } else { %> 

它顯示錯誤。所以我無法弄清楚如何使用if邏輯來基於cookie值呈現它。所以請引導我的概念。謝謝

+0

你不能在實際的css中做任何if/else,但是你可以在'style =「」'中使用if/else使用內聯css – Albzi

+0

CSS不能決定外部條件。決定應該從外部注入。 – Farshid

回答

1

與其他人一樣說,你不能在CSS中使用服務器端代碼,你所做的是正確的差不多,如果您確保該字符串是從後面的代碼訪問:

protected string strCountryCookie = "GB"; 

,然後修復您的發言

<head runat="server"> 
    <title>Test</title> 
    <% if (strCountryCookie == "GB") 
     { %> 
     <style type="text/css"> 
     #acloginpod { 
       width:380px; 
       background:#ebebeb url(../images/acloginpodbg.gif) repeat-x; 
       border:1px solid #d3d3d3; 
       -webkit-border-radius:7px; 
       -moz-border-radius:7px; 
      } 
     </style> 
    <%} %> 

雖然這會變得相當難看......特別是如果你添加一堆國家。

另一種方法是將所有自定義樣式放入其自己的樣式表中,然後根據Cookie動態加載樣式表。你得到的樣式表的好處被緩存在這種情況下:

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

然後在你的代碼加載樣式表背後:

_countryStyleSheet.Href = String.Format("~/styles/{0}.css", strCountryCookie); 

在這個例子中,樣式表將被命名爲GB.css等等

0

你不能在CSS文件中使用任何代碼。

你可以把你的css放到一個單獨的文件中,然後根據你的條件包含它或不包含在標題中。

我喜歡在這種情況下的方法是在每個頁面上包含所有css標記,而是根據條件將不同的類分配給我的元素。對於你來說,這意味着使用類.acloginpod而不是id,然後僅當國家是'DE'時纔將該元素分配給該類。

,或者如果你想爲以下不同的風格不同的國家,然後定義元素類: 「>

,並在你的CSS定義不同的類,如mydiv-DE或mydiv-GB