在WEB开发中经常有一些代码是在很多地方重复出现的,象导航栏、用户登录/注册和首页上面的一些固定栏目等。这些可重用的代码我们可以把它写成一个通用模块供需要的地方来引用,这样做即节省了开发时间还方便以后的维护。
在ASP.NET的web编程中提供了一种叫做“用户控件”可以帮助我们完成这种做法,其文件扩展名是“.ascx”,由于ascx文件是用来插入ASPX页面中使用的,而一个ASPX窗体只能包含一个<form>标志,所以ascx用户控件不能包含<form></form>标志。
1、下面使用一个经典入门范例来创建一个简单的用户控件:
Hello.ascx |
Hello.aspx <%@Register TagPrefix=”wen” TagName=”Hello”src=”Hello.ascx”%> <html> <body> </body> </html> |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2、以下的演示代码给控件添加属性
下面我们举一个用户登录的文件,把它写成用户控件,在向其中添加UserName和PassWord这两个属性。
向用户控件添加属性很简单,只要在ascx文件中的<script></script>块中定义就行了。 至此,我们已经给UserLogin.ascx文件添加了UserName和PassWord这两个属性了,以下DEMO演示如何在ASPX页面上引用这两个属性。
UserLogin.ascx <html> <title>用户登录</title> <body> <tr> </tr> <hr> <tr> </tr> </table> </body> </html> <script language=”C#”runat=”server”> } } </script> |
UserLogin.aspx <%@Register TagPrefix=”wen” TagName=”UserLogin”src=” UserLogin.ascx” %> <html> <title>引用属性</title> <body> </body> </html> <script language=”C#”runat=”server”> voidPage_Load(Object sender,EventArgs e){ } } </script> |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3、以下的演示代码给控件添加事件
在上面我们定义了一个用户登录的用户控件UserLogin.ascx文件,里面包含了一个LinkButton服务器按钮控件,当用户单击该按钮时服务器端会自动生成一个回发来激发Page.Load事件。除了服务器自动产生回发来激发Page.Load事件外,我们可以给LinkButton添加一个它自己的事件,添加事件其实也很简单,通过在<script></script>块中声明事件,然后把该事件添加到用户控件中。
我们现在通过以下的例子来说明如何在UserLogin.ascx用户控件中添加事件。
UserLogin.ascx <html> <title>用户登录</title> <body> <tr> </tr> <hr> <tr> </tr> </table> </body> </html> <script language=”C#”runat=”server”> } } public eventEventhandler Login; //添加事件句柄 |
<%@Register TagPrefix=”wen” TagName=”UserEvent”src=” UserLogin.ascx”%> <html> <body> </body> </html> <script Language=”C#”runat=”server”> voidOnLoginPress(Object Render, EventArgs e){ } </script> |