还想再好些,用户控件是否能够有事件句柄呢? 用户控件几乎可以作任何事。下面的代码示范控件如何触发Page_Load事件。有了事件句柄,就不用多写其它的维护代码来控制控件的运行。控件可以自己触发事件。
在下面的代码中,封装了一个ASP的textbox控件。我将我的控件名属性与textbox的内容挂钩。
events.ascx <script language="VB" runat="server"> Sub Page_Load(Src As Object, E As EventArgs) Dim strInitialText As String = "Please Enter a Name!"
If Page.IsPostBack Then If txtName.Text = strInitialText txtName.Text = "" End If Else txtName.Text = strInitialText End If End Sub
Public Property Name As String Get Return txtName.Text End Get Set txtName.Text = Value End Set End Property </script>
Name: <asp:textbox id="txtName" runat="server" />
<asp:RequiredFieldValidator ControlToValidate="txtName" id="valtxtName" Display="Dynamic" runat=server> Please Enter a Name! </asp:RequiredFieldValidator>
events.aspx <%@ Page Language="VB" ClientTarget="downlevel" %> <%@ Register TagPrefix="asp101samps" TagName="SomeText" Src="properties.ascx" %> <%@ Register TagPrefix="asp101samps" TagName="TextBox" Src="events.ascx" %>
<script language="VB" runat="server"> Sub Page_Load(Sender As Object, E As EventArgs) txtLabel.Text = ""
' The textbox control handles it's own stuff ' in it's own Page_Load event handler. End Sub
Sub btnSubmit_Click(Sender As Object, E As EventArgs) ' Sets the label to the textbox's text txtLabel.Text = txtName.Name
' I don't need to worry about validation since ' my user control does it for me. End Sub </script>
<html> <head> <title>ASP.NET User Control Sample - Validation & Events</title> </head> <body bgcolor="#FFFFFF">
<form runat="server">
<asp101samps:TextBox id="txtName" runat="server" />
<br />
<asp:button id="btnSubmit" onClick="btnSubmit_Click" text="Submit" runat="server" />
</form>
<asp101samps:SomeText id="txtLabel" runat="server" />
</body> </html>
这就是关于用户控件和应用的说明。无论你认为它是否简单,它肯定比使用传统ASP要容易。
|