自定义控件

我决定使用CodeBehind后,通过学习后发现以前的一些认识是错误的,现总结如下:

1,用类方法:ASPX页面<% @ Page Src="cs\EventHandle.cs" Inherits="Aspcn" %>

SRC属性设定事件处理真正的代码位置,Inherits属性则设定需要引入的类名。可以看到本例中定义事件处理的文件是EventHandle.cs。在EventHandle.cs中有public class Aspcn : PageSrc定义类名。

2,用户控件:ASPX页面<% @ Register TagPrefix="aspcn" TagName="Header" Src="UserControls/Header.ascx" %>
使用用户控件就必须使用Register指令,TagPrefix属性定义是的一个Namespace的名字,以保证它在这个页面的唯一性;TagName属性是在定义一个类(class)的别名,由于用户控件执行时是被CLR编译成为类来执行的,所以就必须给本程序中每个用户控件一个唯一的名字,以便于大家区分;Src属性则是具体指出了使用的用户控件的文件名(用户控件均以.ascx结尾)。用户控件的使用与普通Server控件一样:
<namespace:class ... runat="server" />具体的使用例子有:
<aspcn:Logon id="MyLogon" runat="server" />

Logon.ascx(Logon用户控件)

<% @ Import Namespace="System.Data" %>
<% @ Import Namespace="System.Data.SqlClient" %>
<Script Language="C#" Runat="Server">
protected string strConnString = "server=(local)\\Feidao;database=aspcn;Trusted_Connection=yes";
//定义UserControl的属性
public string UserName
{
get
{
return tbUserName.Text;
}
set
{
tbUserName.Text = value;
}
}
public string Password
{
get
{
return tbPasswd.Text;
}
set
{
tbPasswd.Text = value;
}

}

//事件处理
private void Submit_Click(Object sender,EventArgs e)
{
SqlConnection MyConn = new SqlConnection(strConnString);
MyConn.Open();
string strUserName,strPassword,strSelect;
strUserName = tbUserName.Text;
strPassword = tbPasswd.Text;
strSelect = "select * from bbs_user where id='"+strUserName+"' and password='"+strPassword+"'";
SqlCommand MyComm = new SqlCommand(strSelect,MyConn);
SqlDataReader dr = MyComm.ExecuteReader();
if(dr.Read())
{
//登陆成功
lblMsgShow.Text = "登陆成功";
Session["UserName"] = dr["id"].ToString();
Session["Purview"] = dr["purview"].ToString();
}
else
{
//登陆不成功
lblMsgShow.Text = "登陆不成功";
}
dr.Close();
MyConn.Close();
}
</script>
<table>
<tr><td colspan="2" align="center"><b>登陆窗口</b></td></tr>
<tr><td colspan="2" align="center"><asp:Label id="lblMsgShow" ForeColor="red" runat="server" /></td></tr>
<tr><td>用户名:</td><td><asp:TextBox id="tbUserName" runat="server" /></td></tr>
<tr><td>密码:</td><td><asp:TextBox id="tbPasswd" TextMode="Password" runat="server" /></td></tr>
<tr><td><asp:Button id="btnSubmit" Text="登陆" OnClick="Submit_Click" runat="server" /></td></tr>
</table>

这比第一种方法更好,因为在页面中只有<form runat="server">
<aspcn:Header id="MyHeader" runat="server" />
<aspcn:Logon id="MyLogon" runat="server" />
<aspcn:Footer id="MyFooter" runat="server" />
</form>结构很清晰。

3,自定义控件:由于每个用户控件都是一个ascx文件,当这些控件很多时,它们的使用就显得比较零乱。将一些比较相似的控件整合起来,在程序中只需要引用一次,便全部搞定。就是"将多个类(class)导入同一个命名空间(namespace)"。也就是自定义控件。<% @ Register TagPrefix="aspcn" Namespace="aspcn" Assembly="aspcn" %>
posted on 2006-08-10 06:07  石川  阅读(185)  评论(0)    收藏  举报