ASP.Net中程序构架与程序代码的分离 2
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())
{
//登陆成功
this.lblMsgShow.Text = "登陆成功";
}
else
{
//登陆不成功
this.lblMsgShow.Text = "登陆不成功";
}
dr.Close();
MyConn.Close();
}
}
//最后是Footer
public class Footer : Control,INamingContainer
{
private string _UserName,_Purview;
public string UserName
{
get
{
return _UserName;
}
set
{
_UserName = value;
}
}
public string Purview
{
get
{
return _Purview;
}
set
{
_Purview = value;
}
}
public Footer()
{
_UserName = "游客";
_Purview = "无";
}
protected override void CreateChildControls()
{
this.Controls.Add(new LiteralControl("用户名:"));
Label lblUserName = new Label();
lblUserName.ForeColor = Color.Red;
lblUserName.Font.Name = "Arial";
lblUserName.Text = this.UserName;
this.Controls.Add(lblUserName);
//this.Controls.Add(new LiteralControl("nbsp;"));
this.Controls.Add(new LiteralControl("权限:"));
Label lblPurview = new Label();
lblPurview.ForeColor = Color.Red;
lblPurview.Font.Name = "Arial";
lblPurview.Text = this.Purview;
this.Controls.Add(lblPurview);
}
}
}
上面和程序是将需要实现的功能,全部导入了自定义控件。程序中可以看到,在aspcn命名空间中包含三个类(Header,Logon,Footer),这三个类正是构架三个主体部分。
要使用自定义控件,还必须将原代码进行编译。
csc /t:library /out:aspcn.dll /r:System.Data.dll,System.Web.dll,System.Drawing.dll
CustomControls.cs
C#程序编译指令的用法,本人在此也不再重复。需要注意的是编译的文件名,必须与控件中namespace的名字一致。
编译后的dll,仍然不能使用,我们必须将其放到.Net平台中最著名的目录--/bin中,bin目录(如果不存在,可以自行建立)存放的是当前虚拟目录中所有使用自定义控件以及组件,CLR在执行ASP.Net程序时会自动搜索此目录中的文件,以找到与ASP.Net程序相匹配的Namespace、Class 以及Assembly。
当我们将程序编译好的aspcn.dll放入/bin目录后,这个自己编写的Server控件便可以使用了。