`
xiaoer_1982
  • 浏览: 1817425 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

在ASP.Net中几种利用CSS实现个性化界面的方法

阅读更多

看了老猫的文章,通过使页面动态加载不同CSS实现个性化界面(如个性化blog界面)有以下几种方法

方法一:

HtmlGenericControl定义不由特定的 .NET Framework 类表示的所有 HTML 服务器控件元素的方法、属性和事件。

<LINK href="login.css" type="text/css" rel="stylesheet">

其中href属性可以从用户配置中动态获得,然后进行页面设置。

<%@pagelanguage="C#"%>
<%@importnamespace="System.Data"%>
<scriptlanguage="c#"runat="server">
publicvoidpage_load(Objectobj,EventArgse)
{
//创建服务器端控件.
//指定的标记"LINK"初始化此类的新实例.
HtmlGenericControlobjLink=newHtmlGenericControl("LINK");
objLink.ID=ID;
objLink.Attributes["rel"]="stylesheet";
objLink.Attributes["type"]="text/css";
objLink.Attributes["href"]="login.css";

//MyCSS为placeholder容器控件,放在<head>域

MyCSS.Controls.Add(objLink);
}
</script>
<html>
<head>
<title>c#</title>
<asp:placeholderid="MyCSS"runat="server"></asp:placeholder>
</head>
<body>
<formrunat="server">

</form>
</body>
</html>

方法二:


可以通过改变WEB控件的CssClass属性,可方便地设置和修改控件的样式。
但在实际开发过程中,一个个地设置控件的CssClass属性,非常繁琐,所以此思路应用不广.
但下面的代码段演示了一次性改变页面所有同类型控件的样式的方法,可以实现简单的SKIN等功能。

代码如下:
publicvoidpage_load(Objectobj,EventArgse)
{
if(!Page.IsPostBack){
//为页面的所有控件设置样式.
SetCSS(Page.Controls);
}
}

privatevoidSetCSS(System.Web.UI.ControlCollectionvControls)
{
for(inti=0;i<vControls.Count;i++)
{
System.Web.UI.ControlvControl=vControls[i];

//得到控件的类型
//可增加控件类型及相应处理方法
stringPType=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);
}
}


privatevoidTextBox_CSS(TextBoxtb){
tb.CssClass="TextBox_show";
}

<formrunat="server">
<asp:textboxid="Search1"runat="server"/>
<asp:textboxid="Search2"CssClass="INPUT"runat="server"/>
</form>

运行后,查看页面源码.可发现文本框的样式已统一修改为"TextBox_show".

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics