日期:2010-04-24  浏览次数:20420 次

应用样式到HTML服务器控件

WEB是一个灵活的用户接口环境,不同的站点在视觉和感觉上极尽变化之能事。层叠式样式表(CSS)的广泛应用,极大的丰富了WEB的设计。所有ASP.NET的HTML服务器控件和WEB服务器控件,已经被设计为能够提供一流的CSS样式支持。这一部分讨论如何应用样式到服务器控件,并且演示服务器控件在WEB FORMS中所提供的精细的外观控制。

应用样式到 HTML服务器控件

标准的HTML标签通过STYLE属性来支持CSS,STYLE属性由一系列成对出现的以分号分割的 属性/值 来定义。例如{font: 12pt verdana; font-weight:700;color:orange;}。关于IE浏览器对CSS属性支持的更多信息,请参考MSDN Web Workshop的 CSS Attributes Reference 页面。所有ASP.NET的 HTML服务器控件,都可以像标准HTML标志那样,接受CSS样式。下面的例子说明了把一些样式应用到不同的HTML服务器控件。如果你察看返回给客户端的源程序,你就会发现这些在控件中引用的样式送到了客户端。

CSS也定义了CLASS属性,通过在文档中包含<style>...</style>来设置CSS样式 。这个属性的优点是仅需要定义一次,就可以应用到不同的标签上,而不需要重新定义标签本身的样式。HTML服务器控件的样式也可以用这种方式管理。请看下面的例子:

当ASP.NET页面被解析的时候,样式信息就被组装到了System.Web.UI.HtmlControls.HtmlControl 类上的STYLE属性上(类型是CssStyleCollection)。该属性建立一个字典,以字符串索引的集合中的值,填充应用控件样式的每一个样式属性值。例如,你可以使用下面的代码设置和取回HtmlInputText服务器控件的width样式属性值。

以下为引用的内容:
<script language="C#" runat="server" >
  void Page_Load(Object sender, EventArgs E) {
    MyText.Style["width"] = "90px";
    Response.Write(MyText.Style["width"]);
  }
</script>
<input type="text" id="MyText" runat="server"/>

下面的这个例子,向你展示如何使用Style集合属性,通过程序来操纵HTML服务器控件的样式

应用样式到WEB服务器控件

WEB服务器控件对样式提供了额外的支持级别,即对于常用的样式设置,增加了几个强类型属性。常用的样式包括背景色、前景色、字体名称和大小、宽度、字体加重等等。这些样式属性作为HTML中可以使用的样式行为的子集,并且作为“平台”属性,在System.Web.UI.WebControls.WebControl基类中直接扩展。使用这些属性的好处在于,在开发工具,例如VS.NET中,他们提供了编译时类型检查和状态完成。

下面的例子显示了一个应用了若干样式的日历控件(作为对照,同时包含了一个没有使用样式的日历控件)。注意当你设置一个类类型的属性,例如Font,你需要使用子属性语法 属性名称-子属性名称。

名称空间System.Web.UI.WebControls包含Style基类,可以封装常用的样式属性(其他的样式类,例如TableStyle 和 TableItemStyle,都是从这个基类继承而来)。

许多服务器控件扩展了这个类型的属性,用来指定该控件分支元素的样式。例如,日历控件扩展了许多样式属性:DayStyle, WeekendDayStyle, TodayDayStyle, SelectedDayStyle, OtherMonthDayStyle, 和 NextPrevStyle等等。你可以使用子属性语法 属性名称-子属性名称来设置这些样式的分支属性,如下面的例子:

一个细微的差别语法,允许声明每一个Style 属性,作为子元素嵌套在web服务器控件标签中。

以下为引用的内容:
<ASP:Calendar ... runat="server">
  <TitleStyle BorderColor="darkolivegreen" BorderWidth="3"
      BackColor="olivedrab" Height="50px" />
</ASP:Calendar>

下面的例子展示了交替显示语法,但是功能上与前一个一样。

如同处理HTML服务器控件一样,你可以使用CSS类定义来应用样式到WEB服务器控件。WebControl基类扩展了一个String属性,名叫CssClass,用来设置样式类:

如果设置到服务器控件的属性不符合该控件的任何强类型属性,那么这个属性和值就会被放到该控件的Attributes集合中。默认的情况下,服务器控件将会不加修改的引用这些属性返回到发出请求的浏览器客户端。这就意味着,样式和类的属性可以直接应用在服务器控件,而不使用这些控件的强类型属性。当然了,明白这个概念需要理解控件的实际引用,他同样是一个应用样式的灵活的方式。对于标准的表单输入控件,这个方法特别有用。请看下面的例子:

通过使用WebControl基类的ApplyStyle方法,WEB服务器控件的样式也能用程序来设置,就象下面这段代码:

以下为引用的内容:
<script language="C#" runat="server">
  void Page_Load(Object Src, EventArgs E ) {
    Style style = new Style();