15.4 以编程的方式设置主题
在前面几节阐述了以声明方式使用ASP.NET主题的一些示例与技巧,接下来将阐述如何使用编程的手段来使用主题。
15.4.1 编程指定页面的主题
其实,在更多的时候,不只需要在页面配置ASP.NET主题,有时还需要根据用户的情况在后台动态配置主题。
这项技术其实非常简单,你所要做的只是在代码里动态设置Page.Theme属性或Page.StyleSheet属性。唯一需要注意的是,这一步必须在Page.PreInit事件阶段完成,此后,尝试设置这些属性会触发异常。
下面的示例通过读取当前Session集合里的主题名称来应用动态主题:
protected void Page_PreInit(object sender, System.EventArgs e)
{
if(Session["MyTheme"]==null)
{
//默认一个主题
Page.Theme="MyTextBox";
}
else
{
Page.Theme=Session["MyTheme"].ToString();
}
}
当然,还可以把选定的主题保存在cookie、会话状态、用户配置属性或者其他用户特定位置。
15.4.2 编程指定控件的SkinID
在ASP.NET中,除了可以以编程的方法来指定页面的主题之外,还可以使用同样的方法来指定控件的SkinID。
值得注意的是,这一步也必须在Page.PreInit事件阶段完成。如下面的示例所示:
protected void Page_PreInit(object sender, System.EventArgs e)
{
TextBox1.SkinID="TextboxDashed";
TextBox2.SkinID="TextboxDotted";
}