在ASP.NET中使用用户控件(二)

翻译|其它|编辑:郝浩|2005-10-08 11:16:00.000|阅读 1378 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


    3、调用用户控件

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

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

  在要包含用户控件的 WEB 窗体页中,声明一个@Register指令,该指令包括:

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

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

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

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

<%@ Register TagPrefix="Acme" TagName="LoginForm" Src=".\LoginForm.ascx" %>

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

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="logintest.aspx.vb" Inherits="logintest.WebForm1"%>
<%@ Register TagPrefix="Acme" TagName="LoginForm" Src=".\LoginForm.ascx" %>
<!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="http://schemas.microsoft.com/intellisense/ie5">
 </HEAD>
<body MS_POSITIONING="GridLayout">
 <form id="Form1" method="post" runat="server">
  <Acme:LoginForm id=" LoginForm " runat="server"/>
 </form></BODY>
</HTML>

  【注意】无论在WEB窗体页上包括了多少个ASP.NET服务器控件(用户控件和其他任何控件),都应只在WEB窗体页上包括一个HtmlForm服务器控件。此控件的开始和结束标记之间应包括所有服务器控件。

  通过上面的程序,在logintest.aspx页中调用了名为loginform.ascx的用户控件,结果如下图所示:



  4、用户控件使用小结

  (1)用户控件使开发人员能够使用编写WEB窗体页的相同编程技巧轻松地定义自定义控件。 作为约定,用.ascx文件扩展名指示这样的控件。这样可以确保用户控件文件不能作为独立的WEB窗体页执行。

  (2)用户控件通过Register指令包括在另一WEB窗体页中,该指令指定TagPrefix、TagName和Src location。

  (3)注册了用户控件后,可以像普通的服务器控件那样将用户控件标记放置在WEB窗体页中(包括runat="server"属性)。在包含WEB窗体页中将用户控件的公共字段、属性和方法提升为该控件的公共属性(标记属性)和方法。

  (4)用户控件参与每个请求的整个执行生存期,并且可以处理自己的事件,封装来自包含WEB窗体页的一些页逻辑。

  (5)用户控件不应包含任何窗体控件,而应依靠其包含WEB窗体页在必要时包括窗体控件。

  (6)可以使用System.WEB.UI.Page类的LoadControl方法以编程方式创建用户控件。用户控件的类型由ASP.NET运行库决定,遵循约定文件名_扩展名。

  (7)只有当为用户控件包括了Register指令时,用户控件的强类型才能由包含WEB窗体页使用(即使没有实际声明的用户控件标记)。

  5、结束语

  在编写WEB应用程序时,如果将可能重复出现的元素都用用户控件来实现,那将大大减少维护代码的代价。而且在修改代码时,记得修改一段代码却忘了修改另一段同样代码的情况也将不存在了。代码越短,出现错误的因素越少,出现错误的可能性就越小。
 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP