我想基于cookie有条件地在页面中呈现css。在我的服务器端,我检测到cookie并将cookie值存储在变量中,现在在aspx页面中,我希望在if else logic
的帮助下基于存储在代码后面的变量中的cookie值来呈现css。
假设在我的.cs代码后面我存储了像strCountryCookie="GB"
这样的cookie值,并且在我的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 else逻辑基于cookie值渲染它。所以请指导我的概念。感谢
答案 0 :(得分: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
等。
答案 1 :(得分:0)
您不能在CSS文件中使用任何代码。
您可以将您的css放入单独的文件中,然后根据您的条件将其包含在标题中。
在这种情况下,我更喜欢的方法是在每个页面上包含ALL css标记,而是根据条件为我的元素分配不同的类。对于那些意味着使用类.acloginpod而不是id的人,然后仅在country为'DE'时才为该类赋值。或者如果您想为不同的国家/地区设置不同的样式,请按以下方式定义元素类: “&GT;
并在您的CSS中定义不同的类,如mydiv-DE或mydiv-GB