当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET用户控件说明和添加事件

ASP.NET
FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用方法
.NET 常用功能和代码小结
在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出
asp.net IList查询数据后格式化数据再绑定控件
asp.net sql存储过程
asp.net 简单实现禁用或启用页面中的某一类型的控件
asp.net(c#)获取内容第一张图片地址的函数
The remote procedure call failed and did not execute的解决办法
ASP.NET 在线文件管理
asp.net 读取并修改config文件实现代码
ASP.NET Cookie 操作实现
asp.net Silverlight中的模式窗体
Silverlight中动态获取Web Service地址
asp.net Silverlight应用程序中获取载体aspx页面参数
asp.net 水晶报表隔行换色实现方法
asp.net 获取Gridview隐藏列的值
手动把asp.net的类生成dll文件的方法
asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页
动态指定任意类型的ObjectDataSource对象的查询参数
asp.net Md5的用法小结

ASP.NET用户控件说明和添加事件


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 109 ::
收藏到网摘: n/a

在WEB开发中经常有一些代码是在很多地方重复出现的,象导航栏、用户登录/注册和首页上面的一些固定栏目等。这些可重用的代码我们可以把它写成一个通用模块供需要的地方来引用,这样做即节省了开发时间还方便以后的维护。

在ASP.NET的web编程中提供了一种叫做“用户控件”可以帮助我们完成这种做法,其文件扩展名是“.ascx”,由于ascx文件是用来插入ASPX页面中使用的,而一个ASPX窗体只能包含一个<form>标志,所以ascx用户控件不能包含<form></form>标志。
 
1、下面使用一个经典入门范例来创建一个简单的用户控件:

Hello.ascx
 <html>
    <body>
      <h1>经典入门范例</h1><hr>
      <h3>Hello Word</h3>
    </body>
  </html>
 
把这段代码保存为Hello.ascx文件,然后在ASPX页面上调用,具体调用如下:

Hello.aspx 
<%@Register TagPrefix=”wen” TagName=”Hello” src=”Hello.ascx”%>
<html>
<body>
 <form id=frm runat=server>
   <wen:Hello ID=MyHello runat=server>
 </form>
</body>
</html>

在IE浏览器的地址里输入 http://localhost/Hello.aspx运行,将在页面上打印出字符串“Hello word”。

代码说明:1)指令@Register定义了用户控件文件的标签名“Hello”和标签前缀名”wen;”

                    2)src属性是连接到用户控件的相关的文件名;
                   
         3)<wen:Hello ID=MyHello runat=server>这一句是在ASPX窗体中调用用户控件Hello.ascx的语句。
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
2、以下的演示代码给控件添加属性

下面我们举一个用户登录的文件,把它写成用户控件,在向其中添加UserName和PassWord这两个属性。

向用户控件添加属性很简单,只要在ascx文件中的<script></script>块中定义就行了。 至此,我们已经给UserLogin.ascx文件添加了UserName和PassWord这两个属性了,以下DEMO演示如何在ASPX页面上引用这两个属性。

UserLogin.ascx 
<html>
<title>用户登录</title>
<body>
 <table>
    <tr>
      <td>用户名:</td>
      <td><asp:TextBox ID=”txt1” runat=”server”></td>
    </tr>
<tr>
 <td>密  码:</td>
 <td><asp:TextBox ID=”txt2” TextMode=”password” runat=”server”></td>
</tr>
<hr>
<tr>
 <td></td>
 <td><asp:LinkButton Text=”登陆” runat=”server”></td>
</tr>
</table>
</body>
</html>
<script language=”C#” runat=”server”>
 public string UserName{
   get{return txt1.Text;}
   set{txt1.Text=value;}
}
 public string PassWord{
   get{return txt2.Text;}
   set{txt2.Text=value;}
}
</script>


UserLogin.aspx
<%@Register TagPrefix=”wen” TagName=”UserLogin” src=” UserLogin.ascx” %>
<html>
<title>引用属性</title>
<body>
 <form runat=”server”>
    <wen: UserLogin ID=”MyLogin” runat=”server”>
 </form>
  用户名:<asp:Label ID=”Lab1” runat=”server”/><br>
  密  码:<asp:Label ID=”Lab2” runat=”server”/><br>
</body>
</html>
<script language=”C#” runat=”server”>
void Page_Load(Object sender,EventArgs e){
 if(IsPostBack){
    Lab1.Text=MyLogin.UserName;
    Lab2.Text=MyLogin.PassWord;
}
}
</script>


 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
3、以下的演示代码给控件添加事件

在上面我们定义了一个用户登录的用户控件UserLogin.ascx 文件,里面包含了一个LinkButton服务器按钮控件,当用户单击该按钮时服务器端会自动生成一个回发来激发Page.Load事件。除了服务器自动产生回发来激发Page.Load事件外,我们可以给LinkButton添加一个它自己的事件,添加事件其实也很简单,通过在<script></script>块中声明事件,然后把该事件添加到用户控件中。
我们现在通过以下的例子来说明如何在UserLogin.ascx用户控件中添加事件。   UserLogin.ascx 
<html>
<title>用户登录</title>
<body>
 <table>
    <tr>
      <td>用户名:</td>
      <td><asp:TextBox ID=”txt1” runat=”server”></td>
    </tr>
<tr>
 <td>密  码:</td>
 <td><asp:TextBox ID=”txt2” TextMode=”password” runat=”server”></td>
</tr>
<hr>
<tr>
 <td></td>
 <td><asp:LinkButton Text=”登陆” OnClick=”MyOnClick” runat=”server”></td>
</tr>
</table>
</body>
</html>
<script language=”C#” runat=”server”>
 public string UserName{
   get{return txt1.Text;}
   set{txt1.Text=value;}
}
 public string PassWord{
   get{return txt2.Text;}
   set{txt2.Text=value;}
}
public event Eventhandler Login; //添加事件句柄
          void MyOnClick(Object Sender,EventArgs e){
             if(Login != null)
                Login(this,new EventArgs()); //激活Login事件
        }
    </script>
在ASPX页面中使用自定义事件:

<%@Register TagPrefix=”wen” TagName=”UserEvent” src=” UserLogin.ascx”%> 
<html>
<body>
 <form runat=server>
   <wen:UserEvent ID=”MyLogin” OnLogin=”OnLoginPress” runat=”server”>
 </form>
 <asp:Label ID=”Lab1” runat=”server”/><br>
 <asp:Label ID=”Lab2” runat=”server”/><br>
</body>
</html>
<script Language=”C#” runat=”server”>
void OnLoginPress(Object Render, EventArgs e){
 Lab1.Text=MyLogin.UserName;
 Lab2.Text=MyLogin.PassWord;
}
</script>

说明:这里的OnLogin事件是我们给用户控件UserLogin.ascx文件添加的事件。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/durongjian/archive/2009/01/10/3746095.aspx