首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

ASP.NET重用代码技术 – 用户控件技术

使用ASP.NET中的代码绑定技术来使得代码重用变得简单可行。我们发现,利用代码绑定技术我们可以容易的将我们的代码和内容分离开来,利用它可以建立可重用的代码,只是这种技术本身也存在着一些局限性。在本文中,我们将会一同探讨另外一种新的ASP.NET技术:用户控件。   什么是用户控件(User Controls)?   为了能更好的理解用户控件的重要性,我们先来看看一段小小的“历史”。在以前的ASP当中,可重用的技术实现选择是相当受限制的。许多的开发者一般都是借助将公共的常用的子过程放到那些包含文件当中的做法来实现一定的所谓代码重用的。比如,如我们想要在许多的ASP页面当中现实一个下拉列表框,我会在一个包含文件当中建立一个函数,样子如下所示:   Function GetListBox(asSelectedItem)   '为HTML的选择控件建立字符串   '返回这个字符串   End Function   当然,这样的做法的确在一定程度上做到了重用,但是为了能做到更加通用性,你不得不要增加更多的参数。为了使得类似上面的你需要整理的代码得以正常工作是困难的,因为要达到提供它的通用性(可重用性),你大概不得不去修改这些已经存在的代码,以便使得他们也能在新的环境下正常工作。   IIS5中的VBScript5.0增加了建立类的功能。这就使得我们可以通过一个较多面向对象的方式来实现可重用的代码。   Class ComboBox   Property Let ControlName(vData)   .   End Property   <More properties and methods here>   End Class   这样做会稍微好一些,但是开发者仍旧需要被迫去编写那些函数,以便返回HTML代码。而且,他也没有能力操纵那些类的实例对象的事件。为了能做到操作事件,开发者不得不建立一些COM组件,而后者则增加了应用程序的额外的复杂度。   有了ASP.NET,我们拥有了一个新的简单的工具来编写可重用的代码—用户控件。用户控件(也叫pagelets)提供了这样一种机制,他使得我们可以建立能够非常容易的被ASP.NET页面使用或者重新利用的代码部件。一个用户控件也是一个简单的ASP.NET页面,不过它可以被另外一个ASP.NET页面包含进去。在你的ASP.NET应用程序当中使用用户控件的一个主要的优点是用户控件的支持一个完全面向对象的模式,使得你有能力去捕获事件。而且,用户控件支持你使用一种语言编写ASP.NET页面其中的一部分代码,而使用另外的一种语言编写ASP.NET页面另外一部分代码,因为每一个用户控件可以使用和主页面不同的语言来编写。   建立一个用户控件   在建立你自己的用户控件之前,你也许想知道在你的web页面中哪些可见的对象是能够重用的好的候选者。能可能的是,你将会在你的站点上的不止一个页面上需要使用融合的用户控件。一旦你开始不断的思考你的控件的结构,你就已经做好的开始的准备。在我们的例子当中,我们将要建立一个简单的搜索的控件,用来搜索SQL Server2000中的数据库Northwind。我们的搜索控件可以使得开发者快速的为一个web页面增加搜索能力。   建立用户控件的第一步是建立一个.ascx文件。这是用户控件需要的文件扩展名。在一个一个.ascx文件中不能包含head,form,或者body标签,因为包含此.ascx文件的.aspx文件已经包含了这些标签。一个.ascx文件只能包含方法,函数,以及和用户控件相关的内同。   在建立一个.ascx文件之后,我们想要为用户控件增加一些可视的代码。在一个用户控件当中可以包含所有的web控件。在我们的例子当中,搜索控件需要拥有一个标签,一个文本框以及一个按钮。我们首先加入这些web控件,因为我们的整个代码当中会涉及到这些对象。下面是具体的代码:   <asp:Label id=lblSearch runat="server" text="Caption"></asp:Label>    <asp:TextBox id=txtSearch runat="server"></asp:TextBox>    <asp:Button id=cmdSearch runat="server" Text="Search" ></asp:Button>   在用户控件中有一件很酷的事情是,你可以定义你自己的属性。在我们的例子当中,我们会定义如下属性:   。LabelText—描述显示给用户的搜索条件   。ConnectiongString---用来联接到数据库的连接字符串   。ResultSetView—包含了搜索结果的数据记录集   。

02

C#学习笔记—— 常用控件说明及其属性、事件

1、 窗体 的属性 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 (2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种: Normal (窗体正常显示)、 Minimized(窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示)。 (3)StartPosition属性:用来获取或设置运行时窗体的起始位置。其取值及含义如表9-1 所示。默认的起始位置是WindowsDefaultLocation。 (4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。 (5)Width属性:用来获取或设置窗体的宽度。 (6)Height属性:用来获取或设置窗体的高度。 (7)Left属性:用来获取或设置窗体的左边缘的x坐标(以像素为单位)。 (8)Top属性:用来获取或设置窗体的上边缘的y坐标(以像素为单位)。 (9)ControlBox属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。值为true时将显示控制框,值为false时不显示控制框。 (10)MaximizeBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。值为 true时显示最大化按钮,值为false时不显示最大化按钮。 (11)MinimizeBox 属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。值为 true时显示最小化按钮,值为false时不显示最小化按钮。 (12)AcceptButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Enter 键时就相当于单击了窗体上的该按钮。 (13)CancelButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Esc 键时就相当于单击了窗体上的该按钮。 (14)Modal 属性:该属性用来设置窗体是否为有模式显示窗体。如果有模式地显示该窗体,该属性值为true;否则为 false。当有模式地显示窗体时,只能对模式窗体上的对象进行输入。必须隐藏或关闭模式窗体(通常是响应某个用户操作),然后才能对另一窗体进行输入。有模式显示的窗体通常用做应用程序中的对话框。 (15)ActiveControl属性:用来获取或设置容器控件中的活动控件。窗体也是一种容器控件。 (16)ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。 (17)AutoScroll 属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。如果此属性值设置为true,则当任何控件位于窗体工作区之外时,会在该窗体上显示滚动条。另外当自动滚动打开时,窗体的工作区自动滚动,以使具有输入焦点的控件可见。 (18)BackColor属性:用来获取或设置窗体的背景色。 (19)BackgroundImage属性:用来获取或设置窗体的背景图像。 (20)Enabled 属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。如果控件可以对用户交互作出响应,则为 true;否则为false。默认值为true。 (21)Font属性:用来获取或设置控件显示的文本的字体。 (22)ForeColor属性:用来获取或设置控件的前景色。 (23)IsMdiChild属性:获取一个值,该值指示该窗体是否为多文档界面(MDI)子窗体。值为 true时,是子窗体,值为false时,不是子窗体。 (24)IsMdiContainer 属性:获取或设置一个值,该值指示窗体是否为多文档界面(MDI)中的子窗体的容器。值为true时,是子窗体的容器,值为false时,不是子窗体的容器。 (25)KeyPreview属性:用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体是否将接收该事件。值为true时,窗体将接收按键事件,值为false时,窗体不接收按键事件。 (26)MdiChildren属性:数组属性。数组中的每个元素表示以此窗体作为父级的多文档界面(MDI)子窗体。 (27)MdiParent属性:用来获取或设置此窗体的当前多文档界面(MDI)父窗体。 (28)ShowInTaskbar属性:用来获取或设置一个值,该值指示是否在Windows任务栏中显示窗体。 (29)Visible属性:用于获取或设置一个值,该值指示是否显示该窗体或控件。值为true 时显示窗体或控件,为 false时不显示。 (30)Capture属性:如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。 2、常用的方法 下面介绍一些窗体的最常用方法。 (1)Show方法:该方法的作用是让窗体显示出来,其调用格式为: 窗体名.

02

【性能优化】ASP.NET常见性能优化方法简述

1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。 使用存储过程 存储过程是存储在服务器上的一组预编译的SQL语句,类似于DOS系统中的批处理文件。存储过程具有对数据库立即访问的功能,信息处理极为迅速。使用存储过程可以避免对命令的多次编译,在执行一次后其执行规划就驻留在高速缓存中,以后需要时只需直接调用缓存中的二进制代码即可。另外,存储过程在服务器端运行,独立于ASP.NET程序,便于修改,最重要的是它可以减少数据库操作语句在网络中的传输。 优化查询语句 ASP.NET中ADO连接消耗的资源相当大,SQL语句运行的时间越长,占用系统资源的时间也越长。因此,尽量使用优化过的SQL语句以减少执行时间。比如,不在查询语句中包含子查询语句,充分利用索引等。 2. 字符串操作性能优化 使用值类型的ToString方法 在连接字符串时,经常使用"+"号直接将数字添加到字符串中。这种方法虽然简单,也可以得到正确结果,但是由于涉及到不同的数据类型,数字需要通过装箱操作转化为引用类型才可以添加到字符串中。但是装箱操作对性能影响较大,因为在进行这类处理时,将在托管堆中分配一个新的对象,原有的值复制到新创建的对象中。使用值类型的ToString方法可以避免装箱操作,从而提高应用程序性能。 运用StringBuilder类 String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。在处理字符串时,最好使用StringBuilder类,其.NET 命名空间是System.Text。该类并非创建新的对象,而是通过Append,Remove,Insert等方法直接对字符串进行操作,通过ToString方法返回操作结果。   其定义及操作语句如下所示:

06
领券