用户自定义控件的使用时间:2022-09-08 00:13:04用户控件介绍 除了 ASP.NET 提供的内置服务器控件外,还可以使用已学会的编写 Web 窗体页的相同编程技巧轻松地定义自己的控件。实际上,只需做少量的修改,几乎任何 Web 窗体页即可在其他页中作为服务器控件重用(注意,用户控件是 System.Web.UI.UserControl 类型,该类型直接从 System.Web.UI.Control 继承)。用作服务器控件的 Web 窗体页简称为用户控件。作为约定,使用 .ascx 扩展名指示这样的控件。这样可以确保用户控件的文件不能作为独立的 Web 窗体页执行(您会略微发现在用户控件和 Web 窗体页之间有很少但很重要的差异)。用户控件通过 Register 指令包括在 Web 窗体页中。 <%@ Register TagPrefix="Acme" TagName="Message" Src="pagelet1.ascx" %> TagPrefix 确定用户控件的唯一命名空间(以便多个同名的用户控件可以相互区分)。TagName 是用户控件的唯一名称(可以选择任何名称)。Src 属性是用户控件的虚拟路径,例如“MyPagelet.ascx”或“/MyApp/Include/MyPagelet.ascx”。注册了用户控件后,可以像放置普通的服务器控件那样,将用户控件标记放置在 Web 窗体页中(包括 runat="server" 属性): <Acme:Message runat="server"/> 公开用户控件属性 当 Web 窗体页被视为控件时,该 Web 窗体的公共字段和方法也被提升为此控件的公共属性(即标记属性)和方法。下面的示例添加了两个公共 String 字段。注意,这些字段可以在包含页中以声明方式或编程方式设置 前台代码 testAcme.aspx : <%...@ Page Language="C#" AutoEventWireup="true" CodeFile="testAcme.aspx.cs" Inherits="testAcme" %><%...@ Register Src="message.ascx" TagName="message" TagPrefix="uc1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>无标题页</title></head><body> <form id="form1" runat="server"> <div> <uc1:message ID="Message1" runat="server" /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="改变自定义控件的状态" /></div> </form></body></html> testAcme.aspx.cs using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class testAcme : System.Web.UI.Page...{ protected void Page_Load(object sender, EventArgs e) ...{ } protected void Button1_Click(object sender, EventArgs e) ...{ //这里的 text 和 color 属性是用户自定义控件中的属性(text,color) // Message1.text = "点击改变自定义控件的文本,颜色变为红色!"; Message1.color = "red"; }} 自定义控件前台:message.ascx <%...@ Control Language="C#" AutoEventWireup="true" CodeFile="message.ascx.cs" Inherits="message" %><span id="message" style="color:<% =color %>"><%=text %></span> 自定义控件前台:message.ascx.cs using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class message : System.Web.UI.UserControl...{ public String color = "blue"; public String text = "这是自定义控件中的文本,颜色为蓝色!"; protected void Page_Load(object sender, EventArgs e) ...{ //public String color="red"; //public String text="这里是用户自定义控件里面的文本,颜色为红色。"; }} ================================================