asp.net2.0 新增控件(1)--UI控件

ASP.NET2.0 新增控件(1)

概述:
   ASP.NET2.0中大约新增了50个控件:
分类控件
数据控件

 GridView、DetailsView

数据源控件

 SqlDataSource, ObjectDataSource, XmlDataSource, 等

登陆控件

 Login, CreateUserWizard, PasswordRecovery, 等

导航控件

 Menu, TreeView, SiteMapPath

Web部件控件

 WebPartManager, WebPartZone, 等

UI控件

 FileUpload, BulletedList, MultiView, Wizard, 等

   本文只重点介绍UI控件。其他控件将陆续随相应的新功能和新特性一起介绍。
   UI控件是用户界面控件,在ASP.NET2.0中新增了如下几种控件:
名称描述
BulletedListBulletedList 控件创建一个无序或有序(编号的)的项列表,它们分别呈现为 HTML ul 或 ol 元素。可以指定项、项目符号或编号的外观;静态定义列表项或通过将控件绑定到数据来定义列表项;也可以在用户单击项时作出响应。
FileUpload使用 控件,您可以为用户提供一种将文件从用户的计算机发送到服务器的方法。该控件在允许用户上载图片、文本文件或其他文件时很有用。
HiddenFieldHiddenField 控件提供了一种在页面中存储信息但不显示信息的方法。例如,可以在 HiddenField 控件中存储用户首选项设置。
ImageMap利用 控件可以创建一个图像,该图像包含许多用户可以单击的区域,这些区域称为作用点(热区)。每一个作用点都可以是一个单独的超链接或回发事件。
MultiView 和 MultiView 和 Web 服务器控件用作其他控件和标记的容器,并提供了一种可方便地显示信息的替换视图的方式。
SubstitutionSubstitution 控件用在配置为需要进行缓存的 ASP.NET 网页上。Substitution 控件允许您在页上创建一些区域,这些区域可以用动态方式进行更新(即不希望被缓存的区域),然后集成到缓存页。
Wizard通过使用窗体收集用户输入是 Web 开发中一个要反复涉及的任务。用来完成某个任务的一组窗体通常称为“向导”。ASP.NET 提供了 控件,可以简化许多与生成一系列窗体以收集用户输入的操作关联的任务。即通过分步骤地过程页指导用户操作。
   其实,这些新增控件大部分都是原先的HTML控件,只是原先并没有包装成WEB控件,而在ASP.NET2.0种将其进行了包装。
   下面我们就分别进行介绍:

一. BulletedList控件:
   1. MSDN中的概述:
      BulletedList 控件创建一个无序或有序(编号的)的项列表,它们分别呈现为 HTML ul 或 ol 元素。可以指定项、项目符号或编号的外观;静态定义列表项或通过将控件绑定到数据来定义列表项;也可以在用户单击项时作出响应。
      BulletedList 与 、 及其他 ASP.NET 列表控件派生自相同的 类,因此其用法与这些控件的用法类似。通过创建静态项或将控件绑定到数据源,可以定义 BulletedList 控件的列表项。如果在设计时知道需要显示的是哪个项,可在标记中将控件的 集合设置为一组单独的项。如果要显示的项是动态的,可以通过代码在运行时创建项集合。
注意:         不要对以上三种列表控件的值属性使用敏感数据(如客户号)。虽然它是不可见的,但各个项的 Value 属性设置仍将呈现在Html页上,用户能在该页的源代码中很容易地看到它们。
   2. 如何:定义列表项:
      由概述知道,BulletedList控件与其他两种列表控件在帮定方式上是相同的。均可以采用直接指定静态项或者配置数据源动态生成。这里就不做过多说明。
   3. 如何:自定义列表项外观:
属性功能
用于设定项目符号的样式
BulletImageUrl用于指定代替项目符号的自定义图片的路径
FirstBulletNumber自定义列表项的起始编号
DisplayMode

项目符号列表的现实样式:
   Text:静态文本   由控件所显示的文本不是交互式的。
   HyperLink:用户可以单击链接定位到其他页。您必须提供一个目标 URL 作为单个项的 Value 属性。
   LinkButton:用户可以单击单个项,然后控件将执行一次回发。

   4. 如何:相应用户单击:
      用法与其他列表控件也很相似。
      (1). 为 事件创建一个事件处理程序。
      (2). 在事件处理程序中,获取传递给处理程序的 参数 e 的 属性。
      (3). 使用索引从控件中获取合适的项,然后获取该项的 和 属性。
   由于BulletedList比较简单而且与原先的列表控件差别不大,这里就介绍这么多。

二. FileUpLoad控件:
   1. MSDN中的概述:
      使用 控件,您可以为用户提供一种将文件从用户的计算机发送到服务器的方法。该控件在允许用户上载图片、文本文件或其他文件时很有用。
      FileUpload 控件显示一个文本框,在此用户可以键入希望上载到服务器的文件的名称。该控件还显示一个“浏览”按钮,该按钮显示一个文件导航对话框。(显示的对话框取决于用户计算机的操作系统。)出于安全方面的考虑,不能将文件名预加载到 FileUpload 控件中。
      用户选择要上载的文件并提交页面后,该文件作为请求的一部分上载。文件将被完整地缓存在服务器内存中。文件完成上载后,页代码开始运行。
      使用 FileUpload 控件,用户可能上载潜在有害的文件,这包含脚本文件和可执行文件。无法预先限制用户可以上载的文件。如果希望限制用户可以上载的文件的类型,则必须在上载文件后检查文件特征(例如,文件扩展名和文件的 ContentType 属性的值)。
   2. 如何:编码实现上载文件:
      这里是我的项目中FileUpload 控件的实际应用,由于保密性的要求所以有所简化。
      这是一个实现数据库远程和本地同时备份的功能流中抽取出的数据库文件上传得例子:
      首先:向网页中拖拽一个FileUpload 控件和一个Button控件。
      其次:在网页后端代码中对Button控件的Click事件进行编码,
         (1). 通过测试 FileUpload 控件的 属性,检查该控件是否有上载的文件。
         (2). 检查该文件的文件名或 MIME 类型以确保用户已上载了您要接收的文件。若要检查 MIME 类型,请获取作为 FileUpload 控件的 属性公开的 对象。然后,通过查看已发送文件的
属性,就可以获取该文件的 MIME 类型。
         (3). 将该文件保存到您指定的位置。您可以调用 HttpPostedFile 对象的 方法。或者,还可以使用 HttpPostedFile 对象的 InputStream 属性,以字节数组或流形式管理已上载的文件。
如下:
ContractedBlock.gif ExpandedBlockStart.gif
None.gifprotected void Button1_Click(object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif        lblBackOK.Text 
= "";
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//*用字符串得到服务器的相对路径,以备上传使用。
InBlock.gif         * 其中:使用 HttpServerUtility 类的 MapPath 方法,即Server对象的MapPath方法,
ExpandedSubBlockEnd.gif         * 并将表示应用程序根文件夹的颚化符 (~) 加上自己指定的上传文件夹名称传递给该方法。
*/

InBlock.gif        
string path = Server.MapPath("~/Pages_Admin"+ "/DBCopy/";
InBlock.gif        
//从FileUpload控件中得到用户选择的本地文件名,用作判断,以保证上传文件具有一定的安全性或标准性。
InBlock.gif
        string name = FileUpload1.FileName;
InBlock.gif        
//在上传前确定上传文件时候是系统所需的数据库备份文件。
InBlock.gif        
//确定上传文件的扩展名:
InBlock.gif
        if (!FileUpload1.HasFile)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            String fileExtension 
= System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
InBlock.gif            
if(fileExtension != ".bak")
InBlock.gif                CustomValidator1.IsValid 
= false;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
//确定文件名:
InBlock.gif
        else if (!name.Contains("assetsdb"))
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            CustomValidator1.IsValid 
= false;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif                
/**//*FileUpload 控件和 HttpPostedFile 对象都支持将文件写入磁盘的 SaveAs 方法。
InBlock.gif                 * 使用 PostedFile 属性中的SaveAs方法,将前面得到的服务器物理路径
ExpandedSubBlockEnd.gif                 * 与用户选择的文件名作为参数执行上传即可,写入磁盘。
*/

InBlock.gif                FileUpload1.PostedFile.SaveAs(path
InBlock.gif                    
+ FileUpload1.FileName);
InBlock.gif                
//以下是服务器备份方法,这里不予讨论
InBlock.gif
                DBOperate dbop = new DBOperate();
InBlock.gif                dbop.DbRestore(Server.MapPath(
"~/Pages_Admin"), name);
InBlock.gif                lblRestoreOK.Text 
= "恢复成功!";
ExpandedSubBlockEnd.gif            }

InBlock.gif            
catch(ArgumentException ae)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                lblRestoreOK.Text 
= ae.Message;
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

注意:         1. 使用 FileUpload 控件,用户可能上载潜在有害的文件,这包含脚本文件和可执行文件。无法预先限制用户可以上载的文件。如果希望限制用户可以上载的文件的类型,则必须在上载文件后检查文件特征(例如,文件扩展名和文件的 ContentType 属性的值)。
         2. 可上载的最大文件的大小取决于 (请求的最大大小(以千字节为单位)。默认大小为 4096 KB (4 MB)。 )配置设置的值。如果用户试图上载大于最大允许值的文件,则上载会失败。可以在配置文件的System.web节的httpRuntime元素中配置。
ContractedBlock.gif ExpandedBlockStart.gif
None.gif<configuration>
None.gif  
<system.web>
None.gif  
<httpRuntime maxRequestLength="4000"
None.gif    enable 
= "True"
None.gif    idleTimeOut 
= "15"
None.gif    requestLengthDiskThreshold
="512
None.gif    useFullyQualifiedRedirectUrl="
True"
None.gif    executionTimeout
="45"
None.gif    versionHeader
="1.1.4128"/>
None.gif  
</system.web>
None.gif
</configuration>

      至此,整个备份事例就完成了。对于FileUpload控件的使用以及实例就介绍完了。

三. ImageMap控件:
   1. MSDN中的概述:
      利用 ASP.NET 控件可以创建一个图像,该图像包含许多用户可以单击的区域,这些区域称为作用点。每一个作用点都可以是一个单独的超链接或回发事件。可以在一幅图片中设置很多热区,当用户点击不同热区的时候会有不同的反应。通过点击热区,可以跳转到不同的URL也可以执行不同的服务器代码。
      ImageMap 控件主要由两个部分组成。第一个是图像,它可是任何标准 Web 图形格式的图形,如 .gif、.jpg 或 .png 文件。第二个元素是作用点控件的集合。每个作用点控件都是一个不同的元素。对于每个作用点控件,您要定义其形状(圆形、矩形或多边形)以及用于指定作用点的位置和大小的坐标。
   2. 如何:定制热区:
      可以根据需要为图像定义任意数目的作用点。不需要定义覆盖整个图形的作用点。
      在放置了ImageMap控件,且加载了图片后,我们可以在ImageMap控件的属性中找到HotSpots属性,点开它的设置窗口。会发现在“添加”按钮的右侧有可以点击的箭头,点开后,出现下拉菜单。其中包含三项即圆形热区(CircleHotSpot)、长方形热区(RectangleHotSpot)、多变性热区( PolygonHotSpot)三种形状。
      对于圆形热区(CircleHotSpot)而言,只要定义圆心(X,Y)、半径(Radius);对于长方形热区(RectangleHotSpot),需要定义左上角的 x 坐标(Left)、左上角的 y 坐标(Top)、右下角的 x 坐标(Right)、右下角的 y 坐标(Bottom);对于多变性热区( PolygonHotSpot),我们要将 Coordinates 属性设置为指定 PolygonHotSpot 对象每个顶点的坐标的字符串。多边形顶点是两条多边形边的交点。
      除热区外外观外我们还要关注的属性有:
属性描述
AlternateText获取或设置当公布图像不可用时显示在控件中的替换文字。支持工具提示功能的浏览器将此文本显示为公布的工具提示,即鼠标移至热区上时出现的提示。
HotSpotMode

获取或设置单击控件中的HotSpot对象时HotSpot 的行为模式:

选项   描述
NotSet未定义行为,HotSpot 对象将导航至某个 URL
InactiveHotSpot 不具有任何行为
NavigateHotSpot 定位到 URL
PostBackHotSpot 生成到服务器的回发,
NavigateUrl热区模式为Navigate时,要跳转到的URL地址
PostBackValue热区模式为PostBack时,要标示产生事件的热区名成,在单击事件的ImageMapEventArgs数据中传送。
      可以定义重叠的作用点。每个作用点都包含一个 z 索引值,如果用户点击某个由两个或更多重叠的作用点定义的区域,则 z 顺序的值最高的作用点便是选定的作用点。
      以上属性的选择均可以在设计模式中轻松配置。无需书写代码。
   3. 如何:响应用户单击事件:
注意:         如果 ImageMap 控件或单个作用点已配置为转到特定 URL,则您没有机会直接对单击做出响应。但是,如果控件或单个作用点配置为执行回发,则可以为该事件编写处理程序并确定单击了哪个作用点。      首先:如上所说,向页面放置ImageMap控件,并定制其热区属性是PostBack。
      例如:
ContractedBlock.gif ExpandedBlockStart.gif
None.gif<asp:ImageMap ID="ImageMap1" ImageUrl="~/Images/MapTest.PNG" 
None.gif            runat
="server" 
None.gif            HotSpotMode
="PostBack" 
None.gif            OnClick
="ImageMap1_Click">
None.gif         
<asp:RectangleHotSpot Bottom="100" Right="100" 
None.gif             HotSpotMode
="PostBack" PostBackValue="NW" />
None.gif         
<asp:RectangleHotSpot Bottom="100" Left="100" Right="200" 
None.gif             HotSpotMode
="PostBack" PostBackValue="NE" />
None.gif         
<asp:RectangleHotSpot Bottom="200" Right="100" Top="100" 
None.gif             PostBackValue
="SW" />
None.gif         
<asp:RectangleHotSpot Bottom="200" Left="100" Right="200" 
None.gif             Top
="100" PostBackValue="SE" />
None.gif        
</asp:ImageMap>
None.gif
      其次:为 ImageMap 控件添加 事件处理程序。
      然后:在事件处理程序中,读取ImageMapEventArgs对象的 属性,以确定单击了哪个作用点。
      例如:
ContractedBlock.gif ExpandedBlockStart.gif
None.gifprotected void ImageMap1_Click(object sender, ImageMapEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    String region 
= "";
InBlock.gif    
switch(e.PostBackValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
case "NW":
InBlock.gif            region 
= "Northwest";
InBlock.gif            
break;
InBlock.gif        
case "NE":
InBlock.gif            region 
= "Northeast";
InBlock.gif            
break;
InBlock.gif        
case "SE":
InBlock.gif            region 
= "Southeast";
InBlock.gif            
break;
InBlock.gif        
case "SW":
InBlock.gif            region 
= "Southwest";
InBlock.gif            
break;
ExpandedSubBlockEnd.gif    }

InBlock.gif    Label1.Text 
= "You clicked the " + region + " region.";
ExpandedBlockEnd.gif}

None.gif
      最后:在页面放置Label控件(Label1)。
   至此,关于ImageMap控件的基本用法就介绍完了,一般在对网站投票或者需要更形象地展示站点的时候可以充分应用这一功能。

四. MultiView 和  控件:
   1. MSDN中的概述:
       和 Web 服务器控件用作其他控件和标记的容器,并提供了一种可方便地显示信息的替换视图的方式。可以使用 MultiView 和 View 控件执行如下任务:
  • 根据用户选择或其他条件提供备选控件集。例如,您可能允许用户从一个源 (feed) 列表中选择,其中每个源都在独立的 View 控件中配置。然后可以显示包含用户选择的源的 View 控件。可以使用 MultiView 和 View 控件作为创建多个 控件的一种替代方法。

  • 创建多页窗体。MultiView 和 View 控件可以提供与 控件相似的行为。Wizard 控件尤其适合于创建用户分步骤顺序填写的窗体。如果要创建根据条件(而不是按顺序)更改的显示,或者如果不需要 Wizard 控件支持的额外功能,则可以使用 MultiView 控件来代替 Wizard。 

      二者结构关系为:MultiView 控件用作一个或多个 View 控件的外部容器。View 控件又可包含标记和控件的任何组合。MultiView 控件可以同时允许开发人员同时编辑出多个View控件页面,可以根据用户选择一次显示一个活动的View 控件页面,并公开该 View 控件内的标记和控件。通过设置 MultiView 控件的 属性,可以指定当前可见的 View 控件。未选择某个 View 控件时,该控件不会呈现到页面中。但是,每次呈现页面时都会创建所有 View 控件中的所有 Web 服务器控件的实例,并且将这些实例的值存储为页面的视图状态的一部分。   
   2. 向 Web 窗体页添加 MultiView Web 服务器控件:
      (1). 从工具箱的“标准”选项卡中,将 MultiView 控件拖动到页面上。
      (2). 从工具箱的“标准”选项卡中,将 View 控件拖动到 MultiView 控件上。
      (3). 键入任何您想要添加到 View 控件中的静态文本。若要向 View 控件添加控件,请将它们从“工具箱”中拖动到 View 控件上,以创建您想要的布局。
      (4). 将 MultiView 控件的 属性设置为要显示的 View 控件的索引值。如果不想显示任何 View 控件,则将此属性设置为 -1。
      (5). 通过添加代码来以编程方式设置 ActiveViewIndex 属性,从而设置要显示的 View 控件。
         a. 声明代码如下:
ContractedBlock.gif ExpandedBlockStart.gif
None.gif<asp:MultiView ID="Main" ActiveViewIndex="0" RunAt="server">
None.gif  
<asp:View RunAt="server">
None.gif  
</asp:View>
None.gif  
<asp:View RunAt="server">
None.gif  
</asp:View>
None.gif  
<asp:View RunAt="server">
None.gif  
</asp:View>
None.gif
</asp:MultiView>
注意:         在每个View中可以像在一般页面中一样随意编辑布局和控件等。但是只有一个由ActiveVIewIndex属性决定的View中的内容被现实。
         b. 通过更改ActiveViewIndex属性,选择呈现不同的View中的内容,代码如下:
ContractedBlock.gif ExpandedBlockStart.gif
None.gifprotected void radioButton_CheckedChanged(Object sender, System.EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
if(radioProduct.Checked)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//"0"代表将要呈现的View的索引值
InBlock.gif
        MultiView1.ActiveViewIndex = 0   
ExpandedSubBlockEnd.gif    }

InBlock.gif    
else if(radioCategory.Checked)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//"1"代表将要呈现的View的索引值
InBlock.gif
        MultiView1.ActiveViewIndex = 1
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}
      由此可见,MultiView控件的使用是很简单而且很方便。
注意:         由于视图状态虽然不显示,却在后端隐藏加载,这样,视图状态的多少和大小将直接影响到页面的加载性能。请慎用!

至此,我们关于ASP.NET2.0的新控件中UI控件的介绍就到这里,因为 Wizard控件的很好的例子就是最新的登陆控件集中的控件,所以留给大家自己思考和研究。而Substitution控件与缓存部分联系相当紧密,所以留待缓存介绍部分再作详细说明。
         最后,祝大家编成愉快!

转载于:https://www.cnblogs.com/zhangdong/archive/2007/01/04/608907.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值