ASP.Net中利用CSS实现多界面两种方法
通过使页面动态加载不同CSS实现多界面 (类似于这个blog)方法一:
以下是引用片段:
<%@page language="C#"%>
<%@import namespace="System.Data"%> ;P1i;| d5G'E-\4\
<script language="c#" runat="server"> +eO/r)~J C,c#c
public void page_load(Object obj,EventArgs e) e,j[X H
{ 2CJ9k:c)y p!?Z
//创建服务器端控件.
//指定的标记"LINK"初始化此类的新实例. &w\.HW/Ho
HtmlGenericControl objLink=new HtmlGenericControl("LINK"); $uWBo1j6Mg+@
objLink.ID=ID; "a_#D+g4}]7[j!U
objLink.Attributes["rel"]="stylesheet"; D}']e J vE
objLink.Attributes["type"]="text/css"; ){%j!LQc6lg?
objLink.Attributes["href"]="portal.css";
//此控件不产生任何可见输出,仅作为其他控件的容器,可在其中添加,插入或移除控件. )[ xqtQ _ y'An
MyCSS.Controls.Add(objLink); /`)Wt.F |gL3o1B9a
} [TZDp Si'}L
</script> X+q3c3mTWa*K:p
<html>
<head> @M8s^(mE'VQ`-c
<title>c#</title> 6O-X/V$~"@5Xb7nm&R
<asp:placeholder id="MyCSS" runat="server"></asp:placeholder>
</head> -hOTKj%\(E)E
<body bgColor="#ffcc66" style="FONT:9pt"> 3uM!{QN$[6hTLOF
<form runat="server">
W dEaf ]1f\-O
</form> L*M.D'J.oc M:ZHu7e
</body>
</html> }$MxC:_I A}9S
*u&R}'Dv2hOA
u)y@3\,HPDy0s:b
通过动态设置页面所有同类型控件的样式来该变界面:d"u)p%}B S,y{
方法二:
可以通过改变WEB控件的CssClass属性,可方便地设置和修改控件的样式。WM [h-T)R
但在实际开发过程中,一个个地设置控件的CssClass属性,非常繁琐,所以此思路应用不广.
但下面的代码段演示了一次性改变页面所有同类型控件的样式的方法,可以实现简单的SKIN等功能。
代码如下:
以下是引用片段:
public void page_load(Object obj,EventArgs e)
{ fy)?tx-Zy%KP
if(!Page.IsPostBack){ 2Q)USx#J
//为页面的所有控件设置样式.
SetCSS(Page.Controls);
}
}
private void SetCSS(System.Web.UI.ControlCollection vControls) g8W6[-Yb
{ d2DK$i&j*A1gE
for(int i=0;i<vControls.Count;i++)
{
System.Web.UI.Control vControl=vControls;
K]#Tr*X
//得到控件的类型 a#L5Yv7O4S*s p6jM
//可增加控件类型及相应处理方法 (qJ we:v)q ^ O(J3V
string PType=vControl.GetType().Name;
switch (PType) Xx1k:i DW-~9rU,zN
{ $t;WP5r,B,e0R
case "TextBox": 's[t3I9j
TextBox_CSS ((TextBox) vControl); G k9W5l^~,D
break;