600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 在ASP.NET中使用用户控件

在ASP.NET中使用用户控件

时间:2021-01-26 00:36:00

相关推荐

在ASP.NET中使用用户控件

今天给大家分享的是由小编精心为您推荐的在中使用用户控件,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

中提供的用户控件,可以解决中无法解决的代码重用问题,更方便了调试工作中的错误检查。本文通过用户控件实现方法讲解和一个用户控件例程的实现,进一步验证了利用用户控件解决代码重用的可行性和有效性。

[email protected]

[email protected]��传统的ASP中,要将用Server. Execute执行的ASP文件或事务对象组件的代码分离开,一般只能将代码分离成几个文件,然后使用include的方法。这种方法将造成内存中有多个include文件的复本(文件每被引用一次就产生一个复本),从而增加了系统的负担,因此并不可行。使用Server. Execute或许有些改观,但是不能向正在执行的ASP文件传递附加的查询串参数。使用组件可能是唯一比较好的做法。在中,除了使用(并不推荐使用)和事务对象组件的方法,还可以使用两种新技术:类和用户控件。

使用code-behind类可以有效地将客户端的HTML代码和服务器端的事件处理代码分离开。将这两部分代码分离开有利于调试时跟踪程序,因为那时就不必在实现用户界面的代码和事务逻辑代码之间来回切换。而且,如果项目中用户界面和事务处理是由不同的小组开发的,那么使用code-behind类就可以使这两部分实现独立调试。利用code-behind类将用户界面代码和事务逻辑代码区分开使得代码的集成和维护都比较简便。下面将介绍的用户控件,从代码重用的角度来处理代码分离问题。

1、用户控件简介

用户控件使程序员能够很容易地跨 WEB应用程序划分和重复使用公共UI功能。与WEB窗体页相同,程序员可以使用任何文本编辑器创作用户控件,或者使用代码隐藏类开发用户控件。此外,与WEB窗体页一样,用户控件可以在第一次请求时被编译并存储在服务器内存中,从而缩短以后请求的响应时间。但与WEB窗体页不同的是,不能独立地请求用户控件,用户控件必须包括在WEB窗体页内才能使用。

与服务器端包含文件(SSI)相比,用户控件通过访问由提供的对象模型支持,使程序员具有更大的灵活性。程序员可以对在控件中声明的任何属性进行编程,而不只是包含其他文件提供的功能,这与其他任何服务器控件一样。

尽管在创作用户控件时需要选择一种语言,但程序员可以将多个用户控件包含在用多种语言创作的一个WEB窗体页中。例如,可以用创造一个用户控件,导入来自文件的数据,再用#创建另一个用户控件,该控件包含一个订单窗体,然后在同一个窗体页中包括这两个控件。

此外,可以独立于包含用户控件的WEB窗体页中除该控件以外的部分来缓存该控件的输出。这一技术称作片段缓存,适当地使用该技术能够提高站点的性能。例如,如果用户控件包含提出数据库请求的服务器控件,但该页的其余部分只包含文本和在服务器上运行的简单代码,则程序员可以对用户控件执行片段缓存,以改进应用程序的性能。

2、创建用户控件

可以通过使用文本或HTML编辑器以声明方式创建用户控件。用户控件声明语法与创建WEB窗体页所采用的语法十分类似;两者的主要差别在于用户控件在内容周围不包括<html>、<body>和<form>元素。在包含用户控件的WEB窗体页中包括这些元素。

用户控件可以像文本文件一样简单,或者它们可以包含其他服务器控件。以下过程简要介绍了一个可包括在应用程序多个页上的简单登录窗体。

在代码声明块中公开属性、事件处理程序以及要包括在用户控件功能中的其他任何代码。在使用用户控件的属性时有两个选择。首先,可以定义用户控件的新属性并操作它们。其次,可以操作构成用户控件的服务器控件的属性。例如,在用户控件中声明Textbox WEB服务器控件,并向它提供一个ID为PASSWORD,则可以通过使用PASSWORD. Text语法来操作其Text属性。

当用户控件包括在WEB窗体页中时,此用户控件中包含的任何服务器控件的所有属性和方法都将提升为此用户控件的公共属性和方法。

步骤1:以下代码示例声明映射到步骤1中代码的文本框的UserId和Password属性。可以通过声明或编程的方式,在任何包含此用户控件的WEB窗体页中操作这些属性。

Public MustInherit Class LoginformInherits WithEvents User As WithEvents Pass As WithEvents Button1 As # " Web 窗体设计器生成的代码 "'该调用是 Web 窗体设计器所必需的。<()> Private Sub InitializeComponent()End SubPrivate Sub Page_Init(ByVal sender As , ByVal e As ) Handles &#: 此方法调用是 Web 窗体设计器所必需的'不要使用代码编辑器修改它。InitializeComponent()End Sub#End RegionPrivate Sub Page_Load(ByVal sender As , ByVal e As ) Handles &#在此处放置初始化页的用户代码 SubPublic Property UserId() As [String]GetReturn GetSet(ByVal Value As [String]) = ValueEnd SetEnd PropertyPublic Property Password() As [String]GetReturn GetSet(ByVal Value As [String]) = ValueEnd SetEnd PropertyEnd Class

步骤2:创建该用户控件显示的UI元素。以下代码创建与来自步骤1的代码进行交互的登录窗体。

将此用户控件包括在Web窗体页中时,[email protected]�该文件的路径。

<%@ Control Language="vb" AutoEventWireup="false" Codebehind="&; Inherits="&; TargetSchema="&; %><TABLE cellSpacing="15"><TR><TD><B>用户姓名: </B></TD><TD>< id="User" runat="server"></></TD></TR><TR><TD><B>用户口令: </B></TD><TD>< id="Pass" runat="server" TextMode="Password"></></TD></TR><TR><TD></TD><TD><ASP:Button id="Button1" runat="server" Text="登录" BorderStyle="Groove"></><><><>

3、调用用户控件

只有当包括在WEB窗体页中时,用户控件才可以工作。当一个请求到达某一页而该页包含用户控件时,该用户控件将经历任何服务器控件所要经历的所有处理阶段。

在 WEB 窗体页中包括用户控件的方法很简单。

在要包含用户控件的 WEB 窗体页中,[email protected],该指令包括:

tagprefix属性,该属性将前缀与用户控件相关联。此前缀将包括在用户控件元素的开始标记中。

tagname属性,该属性将名称与用户控件相关联。此名称将包括在用户控件元素的开始标记中。

Src属性,该属性定义要包括在WEB窗体页中的用户控件文件的虚拟路径。

例如,以下代码将注册在文件中定义的用户控件。该控件还被指定有标记前缀和标记名称。

<%@ Register TagPrefix="Acme" TagName="LoginForm" Src=".&; %>

使用自定义服务器控件语法在HtmlForm服务器控件的开始标记和结束标记之间 (<form runat=server></form>) 声明该用户控件元素。例如,要声明在上一步导入的控件,使用以下语法。

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="&; Inherits="&%><% Register TagPrefix="Acme" TagName="LoginForm" Src=".&; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><title>WebForm1</title><meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0"><meta name="CODE_LANGUAGE" content="Visual Basic 7.0"><meta name="vs_defaultClientScript" content="JavaScript"><meta name="vs_targetSchema" content="&;></HEAD><body MS_POSITIONING="GridLayout"><form id="Form1" method="post" runat="server">< id=" LoginForm " runat="server"/></form></BODY></HTML>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。