C#.net中web工程中创建用户控件和被调用的方法

在进行Web开发时通常会出现这样的情况:即可用的工具的功能虽然强大,但不符合具体项目的需求,可能是给定控件的工作方式并不像所期望的那样,也可能是一部分代码本来的目的是能够在多个页上重用,但是许多开发人员实现起来却相当复杂。在这些情况下,定制控件的建立就尤为迫切。简言之,定制控件可以把多个现有的控件包装在一起,这些现有控件还可能有指定布局的额外属性;定制控件也可以与现有的控件完全不同。使用定制控件与使用ASP.NET中的控件一样简单,能使Web站点的编码非常容易。

在过去,实现定制控件是非常复杂的,尤其在大型系统中,由于使用定制控件需要复杂的注册过程,因此定制控件的实现就更为复杂。即使在简单的系统上,创建定制控件所需进行的编码也是一个相当复杂的过程。老版本Web语言的脚本编码功能也不能对手工编写的对象模型提供较好地访问,因此各个方面的性能都比较差。

.NET Framework使用简单的编程技术,为定制控件的创建提供了一个理想的设置。ASP.NET服务器控件的每个方面都可以随意定制,包括模板制作、客户端脚本编码等功能。但是,也不必为所有这些功能编写代码;控件越简单,创建就越容易。

另外,.NET系统中固有的程序集动态查询使Web应用程序在新Web服务器上的安装如同复制包含代码的目录结构一样简单。要使用自己创建的控件,只需复制包含这些控件的程序集和其他代码即可。甚至可以把频繁使用的控件放在Web服务器上一个位于全局程序集缓存器(GAC)的程序集中,这样服务器上所有的Web应用程序就可以访问它们了。

本章将介绍两类不同的控件:

       用户控件——即把现有的ASP.NET页转化为控件

       定制控件——即组合几个控件的功能、扩展现有的控件以及从头创建新的控件

我们将创建一个简单的控件,显示一副扑克牌(黑桃、方块、红桃和梅花),以便轻松地把它嵌入到其他ASP.NET页面中,以此来阐明用户控件的用法。对于定制控件,则创建一个投票控件,它允许用户在列表中选择一个候选人进行投票,并查看投票过程。

27.1  用户控件

用户控件是用ASP.NET代码创建的控件,就像在标准的ASP.NET Web页面中创建控件一样,不同之处在于一旦创建了用户控件,就可以在多个ASP.NET页面中重用它们。

例如,假定已经创建了一个显示数据库中信息的页面,信息也许是关于订单的,就不必创建一个固定的页面去显示信息,而是可以把相关的代码放到用户控件中,然后把该控件插入到任意多个不同的Web页面中。

此外,可以给用户控件定义属性和方法,例如,可以指定Web页面上显示数据库表时的背景色属性,或者指定一个方法,重新进行数据库查询以检查数据库中的变化。

下面创建一个简单的用户控件,与其他章节一样,本章的示例项目也可以从Wrox网站www.wrox.com上下载。

一个简单的用户控件

VS.NET中,创建一个新Web应用程序PCSUserCWebApp1。一旦生成标准文件,就可以选择Project | Add New Item菜单选项,添加名称为PCSUserC1.ascxWeb用户控件,如图27-1所示。

  27-1

给项目添加的文件的扩展名为.ascx.ascx.cs,它们的工作方式与前面的.aspx文件非常相似。.ascx文件将包含ASP.NET代码,看起来与普通的.aspx文件非常相似。.ascx.cs文件是代码后置文件,它定义了用户控件,定义的方式与在.aspx.cs文件中定义窗体的方式一样。

.aspx文件相似,也可以在设计或HTML视图中查看.ascx文件。在HTML视图中查看文件,可以发现一个重要的区别:.ascx文件没有显示HTML代码,特别是没有<form>元素,原因在于:用户控件要插入到其他文件的ASP.NET窗体中,因此不需要自己的窗体标记。生成的代码如下所示。

<%@ Control Language="c#" AutoEventWireup="false" Codebehind="PCSUserC1.ascx.cs"

    Inherits="PCSUserCWebApp1.PCSUserC1"

    TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>

这非常类似于在.aspx文件中生成的<%@ Page %>指令,但指定了Control,而不是Page,并包括一个TargetSchema属性。这个属性指定控件是为哪个浏览器创建的。在本例中是Internet Explorer 5,这会影响可以从VS.NET工具箱中添加的项目。

查看.aspx.cs文件中生成的代码,可以发现另一个与ASP.NET页面的重要区别:所生成的类是从System.Web.UI.UserControl继承来的。这也是因为控件将用在窗体中,控件并不是窗体。

本例的简单控件是一个显示图形的控件,显示的图形对应于扑克牌中的一种花色(即梅花、方块、红桃和黑桃)。这里所需的图形是VS.NET附带的图形;它们在C:/Program Files/Microsoft Visual Studio .NET 2003/Common7/Graphics/bitmaps/assorted目录中,其文件名分别是CLUB.BMPDIAMOND.BMPHEART.BMPSPADE.BMP。把这些图形文件复制到项目目录中,以便在后面使用它们。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值