用户自定义控件的使用

用户控件介绍

除了 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="这里是用户自定义控件里面的文本,颜色为红色。";

    }

}

 ================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值