textbox…/>。
这些标记不是标准的HTML元素,因此如果它们出现在网页上,浏览器将无法理解它们,然而,当从Web服务器上请求一个ASP.NET页面时,这些标记都将动态地转换为HTML元素,因此浏览器只会接收到它能理解的HTML内容。
在创建.aspx页面时,可以将任意的服务器控件放置到页面上,然而请求服务器上该页面的浏览器将只会接收到HTML和JavaScript脚本代码,如图4-1所示。
Web浏览器无法理解ASP.NET。
Web浏览器只理解HTML,可能也理解JavaScript——但它不能处理ASP.NET代码。
服务器读取ASP.NET代码并进行处理,将所有ASP.NET特有的内容转换为HTML以及(如果浏览器支持的话)一些JavaScript代码,然后将最新生成的HTML发送回浏览器。
ASP.NET服务器控件主要类别有HTML服务器控件、标准服务器控件、验证控件、用户控件、数据控件、导航控件等。
4.2HTML服务器控件
[描述如何使用VWD2008工具箱的“HTML”选项卡上的ASP.NET服务器控件]
4.2.1HTML元素
在VWD2008中,从工具箱添加到页面上的HTML服务器控件只是已设置了某些属性的HTML元素,当然也可通过输入HTML标记在“源”视图中创建HTML元素。
默认情况下,ASP.NET文件中的HTML元素作为文本进行处理,并且不能在服务器端代码中引用这些元素,只能在客户端通过javascript和vbscript等脚本语言来控制。
工具箱的“HTML”选项卡上提供了一些基于HTMLINPUT元素的控件。
本节通过下列两个控件HTMLINPUT元素的使用方法。
4.2.1HTML元素
(1)Input(Button)控件,按钮控件:
默认情况下是“INPUTtype="button"元素”。
(2)Input(Text)控件,文本框控件:
默认情况下是“INPUTtype="text"元素”。
Input(Button)元素的主要功能是创建一个用来触发事件处理程序的按钮,通过使用onclick属性来表明单击按钮可以触发的处理方法。
其主要属性有:
ID:
此控件的编程名称;
value:
设置按钮中显示的文字。
【例4-1】演示如何使用Input(Text)元素和Input(Button)元素[结合操作讲解]参见教材。
4.2.2HTML服务器控件
在VWD2008中,从工具箱添加到ASP.NET页面上的HTML服务器控件只是已设置了某些属性的HTML元素。
默认情况下,这些添加到ASP.NET文件中的HTML元素被视为传递给浏览器的标记,作为文本进行处理,不能在服务器端的代码中引用这些元素。
若要使这些元素能以编程方式进行访问,可以通过添加runat="server"属性表明应将HTML元素作为服务器控件进行处理。
还可设置HTML元素的id属性,这样就可使用基于服务器的代码对其进行编程引用了。
【例4-2】演示如何使用工具箱的Input(Button)服务器控件、Input(Text)服务器控件[结合操作讲解]步骤请参见教材。
4.3标准服务器控件
ASP.NET包含大量可在ASP.NET网页上使用的标准服务器控件。
本节重点从ASP.NET服务器控件的工作原理和过程入手,介绍控件的常用功能和用法。
4.3.1按钮控件
可使用ASP.NETButton服务器控件为用户提供向服务器发送网页的能力。
该控件会在服务器代码中触发一个事件,可以处理该事件来响应回发。
ASP.NET包括三种按钮控件,每种按钮控件在网页上显示的方式都不同,如下表4-1所列:
(1)按钮事件:
当用户单击任何Button(按钮)服务器控件时,会将该页发送到服务器。
这使得在基于服务器的代码中,网页被处理,任何挂起的事件被引发。
这些按钮还可引发它们自己的Click事件,可以为这些事件编写“事件处理程序”。
(2)按钮回发行为:
[重点]
当用户单击按钮控件时,该页回发到服务器。
默认情况下,该页回发到其本身,在这里重新生成相同的页面并处理该页上控件的事件处理程序。
可以配置按钮以将当前页面回发到另一页面。
这对于创建多页窗体可能非常有用。
在某些情况下,可能希望Button控件也使用客户端脚本执行回发。
这在希望以编程方式操作回发(如将回发附加到页面上的其他元素)时非常有用。
可以将Button控件的UseSubmitBehavior属性设置为true以使Button控件使用基于客户端脚本的回发。
(3)处理Button控件的客户端事件
Button控件既可以引发服务器事件,也可以引发客户端事件。
服务器事件在回发后发生,且这些事件在为页面编写的服务器端代码中处理。
客户端事件在客户端脚本(通常为ECMAScript(JavaScript))中处理,并在提交页面前引发。
通过向ASP.NET按钮控件添加客户端事件,可以执行一些任务(如在提交页之前显示确认对话框以及可能取消提交)。
【例4-3】演示Button控件、LinkButton控件、ImageButton控件的使用。
步骤请参见教材。
[结合操作讲解]
4.3.2TextBox(文本框)控件
TextBox服务器控件是让用户向ASP.NET网页输入文本的控件。
默认情况下,该控件的TextMode属性设置为TextBoxMode.SingleLine,这将显示一个单行文本框。
但可以将TextMode属性设置为TextBoxMode.MultiLine,以显示多行文本框(该文本框将作为textarea元素呈现)。
也可以将TextMode属性更改为TextBoxMode.Password,以显示屏蔽用户输入的文本框。
通过使用Text属性可以获得TextBox控件中显示的文本。
安全说明:
将TextMode属性设置为TextBoxMode.Password可有助于确保在输入密码时其他人无法看到。
但是,输入到文本框中的文本没有以任何方式进行加密,为了提高安全性,在发送其中带有密码的页时,可以使用安全套接字层(SSL)和加密。
【例4-4】演示文本框TextBox控件、标签Label控件、按钮Button控件的使用。
[结合操作讲解]
步骤请参见教材。
以下内容属于第8次课:
4.3.3ListBox控件和DropDownList控件
ListBox服务器控件使用户能够从预定义的列表中选择一项或多项。
DropDownList服务器控件使用户可以从预定义的下拉列表中选择单个项,它与ListBox服务器控件的不同之处在于,其选项列表在用户单击下拉按钮之前一直保持隐藏状态。
此外,DropDownList控件不支持多重选择模式。
DropDownList控件的某个选项被选中时,该控件将引发SelectedIndexChanged事件。
默认情况下,此事件不会导致向服务器发送页,但可通过将AutoPostBack属性设置为true,强制该控件立即发送。
如果将ListBox控件的属性SelectionMode的值从“Single”改为“Multiple”将允许进行多重选择,用户可以在按住Ctrl或Shift键的同时,单击以选择多个项。
【例4-5】演示ListBox控件和DropDownList控件的使用。
步骤请参见教材。
[结合操作讲解]
4.3.4CheckBox(复选框)和CheckBoxList(复选框列表)控件
CheckBox控件和CheckBoxList控件分别用于向用户提供选项和选项列表。
CheckBox控件适合用在选项不多且比较固定的情况,当选项较多或需在运行时动态决定有哪些选项时,使用CheckBoxList控件比较方便。
【例4-6】演示复选框控件CheckBox和复选框列表控件CheckBoxLis使用。
步骤请参见教材。
[结合操作讲解]
4.3.5Image和ImageMap控件
ASP.NET3.5包含两个图形控件,一个Image,一个是ImageMap控件。
(1)Image服务器控件使您可以在ASP.NET网页上显示图像,并用自己的代码管理这些图像。
可以在设计时或运行时以编程方式为Image对象指定图形文件。
还可以将控件的ImageUrl属性绑定到一个数据源,以根据数据库信息显示图形。
与大多数其他服务器控件不同,Image控件不支持任何事件。
例如,Image控件不响应鼠标单击事件。
实际上,可以通过使用ImageMap或ImageButton控件来创建交互式图像。
(2)Imagemap说白了就是一种图形,包括许多不同部分,将鼠标指针指在图形的各个部分,点一下鼠标左键,就可以进入另一个超级链接的页面。
Imagemap不一定要真的是map,可以是任何图形。
比如一张脸好了,将鼠标点在眼睛上就出现关于眼睛的页面,点在鼻子上就出现鼻子的页面(很适合做成整容外科的网页吧?
!
),也是一种ImageMap。
ImageMap控件由两个元素组成。
第一个是图像,它可是任何标准Web图形格式的图形,如.gif、.jpg或.png文件。
第二个元素是HotSpot(作用点)控件的集合。
每个作用点控件都是一个类型为CircleHotSpot、RectangleHotSpot或PolygonHotSpot的不同项。
对于每个作用点控件,都要定义用于指定该作用点的位置和大小的坐标。
例如,如果创建一个CircleHotSpot控件,则需要定义圆心的x和y坐标以及圆的半径。
响应用户单击:
每一个作用点都可以是一个单独的超链接或回发事件。
可以指定用户单击作用点时发生的事件,可以将每个作用点配置为可以转到为该作用点提供的URL的超链接。
或者,也可以将控件配置为在用户单击某个作用点时执行回发,并可为每个作用点提供一个唯一值。
回发会引发ImageMap控件的Click事件。
在事件处理程序中,可以读取分配给每个作用点的唯一值。
【例4-7】演示Image控件和ImageMap控件的使用。
[结合操作讲解]
步骤请参见教材。
提示:
HotSpots(作用点)的坐标以像素为单位,在Windows的【画图】程序中打开,任选一种画图工具,移动鼠标,在下部状态栏中可看到当前鼠标所在处的像素点的坐标,如图4-11所示。
4.3.6RadioButton和RadioButtonList服务器控件
在向ASP.NET网页添加单选按钮时,可以使用两种服务器控件:
单个RadioButton控件或RadioButtonList控件。
这两种控件都允许用户从一小组互相排斥的预定义选项中进行选择。
这些控件允许您定义任意数目带标签的单选按钮,并将它们水平或垂直排列。
每类控件都有各自的优点。
单个RadioButton控件使您可以更好地控制单选按钮组的布局。
例如,可以在各单选按钮之间加入文本(即非单选按钮文本)。
RadioButtonList控件不允许您在按钮之间插入文本,但如果想将按钮绑定到数据源,使用这类控件要方便得多。
在编写代码以检查所选定的按钮方面,它也稍微简单一些。
1.对单选按钮分组
单选按钮很少单独使用,而是进行分组以提供一组互斥的选项。
在一个组内,每次只能选择一个单选按钮。
您可以用下列方法创建分组的单选按钮:
(1)先向页面中添加单个的RadioButton控件,然后将所有这些控件手动分配到一个组(GroupName)中。
具有相同组名的所有单选按钮视为单个组的组成部分。
(2)向页面中添加一个RadioButtonList控件。
该控件中的列表项将自动进行分组。
2.RadioButton事件
在单个RadioButton控件和RadioButtonList控件之间,事件的工作方式略有不同。
单个RadioButton控件在用户单击该控件时引发CheckedChanged事件。
默认情况下,这一事件并不导致向服务器发送页面,但通过将AutoPostBack属性设置为true,可以使该控件强制立即发送。
与单个的RadioButton控件相反,RadioButtonList控件在用户更改列表中选定的单选按钮时会引发SelectedIndexChanged事件。
默认情况下,此事件并不导致向服务器发送窗体,但可以通过将AutoPostBack属性设置为true来指定此选项。
【例4-8】演示单选按钮控件RadioButton和单选按钮列表控件RadioButtonList使用。
[结合操作讲解]
4.3.7MultiView和View控件
MultiView和View控件和制作出选项卡的效果,MultiView控件用作一个或多个View控件的外部容器。
View控件又可包含标记和控件的任何组合。
如果要切换视图,可以使用控件的ID或者View控件的索引值。
在MultiView控件中,一次只能将一个View控件定义为活动视图。
如果某个View控件定义为活动视图,它所包含的子控件则会呈现到客户端。
可以使用ActiveViewIndex属性或SetActiveView方法定义活动视图。
如果ActiveViewIndex属性为空,则MultiView控件不向客户端呈现任何内容。
如果活动视图设置为MultiView控件中不存在的View,则会在运行时引发ArgumentOutOfRangeException。
一些常用的属性、方法:
ActiveViewIndex属性:
用于获取或设置当前被激活显示的View控件的索引值。
默认值为-1,表示没有View控件被激活。
SetActiveView方法:
用于激活显示特定的View控件。
ActiveViewChanged事件:
当视图切换时被激发。
MultiView控件一次显示一个View控件,并公开该View控件内的标记和控件。
通过设置MultiView控件的ActiveViewIndex属性,可以指定当前可见的View控件。
呈现View控件内容:
未选择某个View控件时,该控件不会呈现到页面中。
但是,每次呈现页面时都会创建所有View控件中的所有服务器控件的实例,并且将这些实例的值存储为页面的视图状态的一部分。
引用控件:
每个View控件都支持Controls属性,该属性包含该View控件中的控件集合。
也可以在代码中单独引用View控件中的控件。
在视图间导航:
除了通过将MultiView控件的ActiveViewIndex属性设置为要显示的View控件的索引值可以在视图间导航外,MultiView控件还支持可以添加到每个View控件的导航按钮。
若要创建导航按钮,可以向每个View控件添加一个按钮控件(Button、LinkButton或ImageButton)。
然后可以将每个按钮的CommandName和CommandArgument属性设置为保留值以使MultiView控件移动到另一个视图。
【例4-9】View和MultiView控件示例。
[结合操作讲解]
4.3.8AdRotator[广告控件]服务器控件
AdRotator服务器控件提供一种在ASP.NET网页上显示广告的方法。
该控件可显示.gif文件或其他图形图像。
当用户单击广告时,系统会将他们重定向到指定的目标URL。
AdRotator服务器控件可从数据源(通常是XML文件或数据库表)提供的广告列表中自动读取广告信息,如图形文件名和目标URL。
您可以将信息存储在一个XML文件或数据库表中,然后将AdRotator控件绑定到该文件。
AdRotator控件会随机选择广告,每次刷新页面时都将更改显示的广告。
广告可以加权以控制广告条的优先级别,这可以使某些广告的显示频率比其他广告高。
也能编写在广告间循环的自定义逻辑。
AdRotator控件的所有属性都是可选的。
XML文件中可以包括下列属性:
ImageUrl:
要显示的图像的URL。
NavigateUrl:
单击AdRotator控件时要转到的网页的URL。
AlternateText:
图像不可用时显示的文本。
Keyword:
可用于筛选特定广告的广告类别。
Impressions:
一个指示广告的可能显示频率的数值(加权数值)。
在XML文件中,所有Impressions值的总和不能超过2,048,000,000-1。
Height:
广告的高度(以像素为单位)。
此值会重写AdRotator控件的默认高度设置。
Width:
广告的宽度(以像素为单位)。
此值会重写AdRotator控件的默认宽度设置。
【例4-10】使用AdRotator服务器控件显示数据库中的广告[结合操作讲解]
4.3.9Literal控件和Panel控件
Literal控件和Panel控件均可作为容器控件,但二者的适用场合不同,下面分别介绍。
1.Literal控件
Literal控件可以作为页面上其他内容的容器,最常用于向页面中动态添加内容。
对于静态内容,无需使用容器,可以将标记作为HTML直接添加到页面中。
但是,如果要动态添加内容,则必须将内容添加到容器中。
典型的容器有Label控件、Literal控件、Panel控件和PlaceHolder控件。
Literal控件与Label控件的区别在于Literal控件不向文本中添加任何HTML元素。
(Label控件呈现一个span元素。
)因此,Literal控件不支持包括位置属性在内的任何样式属性。
但是,Literal控件允许指定是否对内容进行编码。
Panel和PlaceHolder控件呈现为div元素,这将在页面中创建离散块,与Label和Literal控件进行内嵌呈现的方式不同。
通常情况下,当希望文本和控件直接呈现在页面中而不使用任何附加标记时,可使用Literal控件。
Literal控件常用的属性是Mode属性,该属性用于指定控件对您所添加的标记的处理方式。
可以将Mode属性设置为以下值:
Transform.:
将对添加到控件中的任何标记进行转换,以适应请求浏览器的协议。
如果向使用HTML外的其他协议的移动设备呈现内容,此设置非常有用。
PassThrough.:
添加到控件中的任何标记都将按原样呈现在浏览器中。
Encode:
将使用HtmlEncode方法对添加到控件中的任何标记进行编码,这会将HTML编码转换为其文本表示形式。
例如,标记将呈现为<b>。
当希望浏览器显示而不解释标记时,编码将很有用。
编码对于安全也很有用,有助于防止在浏览器中执行恶意标记。
显示来自不受信任的源的字符串时推荐使用此设置。
【例4-11】演示Literal控件的使用。
[结合操作讲解]
2.Panel控件
Panel控件在ASP.NET网页内提供了一种容器控件,可以将它用作静态文本和其他控件的父控件,向该控件添加其他控件和静态文本。
[特别说明和强调]
可以将Panel控件用作其他控件的容器。
当以编程方法创建内容并需要一种将内容插入到页面中的方法时,此方法尤为适用。
以下部分描述了可以使用Panel控件的其他方法。
(1)动态生成的控件的容器
Panel控件为在运行时创建的控件提供了一个方便的容器。
(2)对控件和标记进行分组
对于一组控件和相关的标记,可以通过把其放置在Panel控件中,然后操作此Panel控件的方式将它们作为一个单元进行管理。
例如,可以通过设置面板的Visible属性来隐藏或显示该面板中的一组控件。
(3)具有默认按钮的窗体
可将TextBox控件和Button控件放置在Panel控件中,然后通过将Panel控件的DefaultButton属性设置为面板中某个按钮的ID来定义一个默认的按钮。
如果用户在面板内的文本框中进行输入时按Enter,这与用户单击特定的默认按钮具有相同的效果。
这有助于用户更有效地使用项目窗体。
(4)向其他控件添加滚动条
有些控件(如TreeView控件)没有内置的滚动条。
通过在Panel控件中放置滚动条控件,可以添加滚动行为。
若要向Panel控件添加滚动条,请设置Height和Width属性,将Panel控件限制为特定的大小,然后再设置ScrollBars属性。
(5)页上的自定义区域
可使用Panel控件在页面上创建具有自定义外观和行为的区域,如下所示:
创建一个带标题的分组框:
可设置GroupingText属性来显示标题。
呈现页时,Panel控件的周围将显示一个包含标题的框,其标题是您指定的文本。
说明:
不能在Panel控件中同时指定滚动条和分组文本。
如果设置了分组文本,其优先级高于滚动条。
在页面上创建具有自定义颜色或其他外观的区域:
Panel控件支持外观属性(如BackColor和BorderWidth),可以设置外观属性为页面上的某个区域创建独特的外观。
说明:
设置GroupingText属性将自动在Panel控件周围呈现一个边框。
【例4-12】演示文件Panel控件的使用。
[结合操作讲解]
以下内容属于第9次课:
4.4验证控件
[重点讲解:
验证控件的使用场所和定义]
ASP.NET为开发人员提供了一套完整的服务器控件来验证用户输入的信息是否有效,这些控件可与ASP.NET网页上的任何控件(包括HTML和服务器控件)一起使用。
4.4.1A