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";

}