ASP.Net中利用CSS实现多界面两法

网络整理 - 08-09
通过使页面动态加载不同CSS实现多界面 (类似于这个blog)
  方法一:
  
  <%@page language="C#"%>
  <%@import namespace="System.Data"%>
  <script language="c#" runat="server">
  public void page_load(Object obj,EventArgs e)
  {
  //创建服务器端控件.
  //指定的标记"LINK"初始化此类的新实例.
  HtmlGenericControl objLink=new HtmlGenericControl("LINK");
  objLink.ID=ID;
  objLink.Attributes["rel"]="stylesheet";
  objLink.Attributes["type"]="text/css";
  objLink.Attributes["href"]="portal.css";
  
  //此控件不产生任何可见输出,仅作为其他控件的容器,可在其中添加,插入或移除控件.
  MyCSS.Controls.Add(objLink);
  }
  </script>
  <html>
  <head>
  <title>c#</title>
  <asp:placeholder id="MyCSS" runat="server"></asp:placeholder>
  </head>
  <body bgColor="#ffcc66" style="FONT:9pt">
  <form runat="server">
  
  </form>
  </body>
  </html>
  ==========================================
  通过动态设置页面所有同类型控件的样式来该变界面:
  
  方法二:
  
  可以通过改变WEB控件的CssClass属性,可方便地柚煤托薷目丶的样式?
  但在实际开发过程中,一个个地设置控件的CssClass属性,非常繁琐,所以此思路应用不广.
  但下面的代码段演示了一次性改变页面所有同类型控件的样式的方法,可以实现简单的SKIN等功能。
  
  代码如下:
  public void page_load(Object obj,EventArgs e)
  {
  if(!Page.IsPostBack){
  //为页面的所有控件设置样式.
  SetCSS(Page.Controls);
  }
  }
  private void SetCSS(System.Web.UI.ControlCollection vControls)
  {
  for(int i=0;i<vControls.Count;i++)
  {
  System.Web.UI.Control vControl=vControls[i];
  
  //得到控件的类型
  //可增加控件类型及相应处理方法
  string PType=vControl.GetType().Name;
  switch (PType)
  {
  case "TextBox":
  TextBox_CSS ((TextBox) vControl);
  break;
  case "Button":
  //Button_CSS ((Button) vControl);
  break;
  case "DataGrid":
  //DataGrid_CSS ((DataGrid) vControl);
  break;
  }
  if(vControl.Controls.Count>0)
  SetCSS(vControl.Controls);
  }
  }
  
  
  private void TextBox_CSS(TextBox tb){
  tb.CssClass="TextBox_show";
  }
  
  <form runat="server">
  <asp:textbox id="Search1" runat="server"/>
  <asp:textbox id="Search2" CssClass="INPUT" runat="server"/>
  </form>
  
  运行后,查看页面源码.可发现文本框的样式已统一修改为"TextBox_show".