用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心信息化信息技术

ASP.Net中程序构架与程序代码的分离

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 15:20:40
his.Controls.Add(ad);





this.Controls.Add(new LiteralControl(+当前广告链接为:));

//加入Label控件

lblAdText = new Label();

lblAdText.ForeColor = Color.Red;

this.Controls.Add(lblAdText);

}

private void OnAdCreated(Object sender,AdCreatedEventArgs e)

{

this.lblAdText.Text = e.AlternateText;

}

}

//接着是Logon

public class Logon : Control,INamingContainer

{

private string strConnString = server=(local)\\Feidao;database=aspcn;Trusted_Connection=yes;

private Label lblMsgShow;

private TextBox tbUserName,tbPasswd;

public String UserName

{

get

{

return tbUserName.Text;

}

set

{

tbUserName.Text = value;

}

}



protected override void CreateChildControls()

{

//添加HTML标签

this.Controls.Add(new LiteralControl(登陆窗口 ));

//添加MsgShow Label控件

lblMsgShow = new Label();

lblMsgShow.ForeColor = Color.Red;

this.Controls.Add(lblMsgShow);

this.Controls.Add(new LiteralControl(用户名:));

//添加UserName与Passwd TextBox控件

tbUserName = new TextBox();

this.Controls.Add(tbUserName);

this.Controls.Add(new LiteralControl(密码:));

tbPasswd = new TextBox();

tbPasswd.TextMode = TextBoxMode.Password;

this.Controls.Add(tbPasswd);

this.Controls.Add(new LiteralControl());

//添加BtnSubmit Button控件

Button btnSubmit = new Button();

btnSubmit.Text = 登陆;

btnSubmit.Click += new EventHandler(this.Submit_Click);

this.Controls.Add(btnSubmit);

this.Controls.Add(new LiteralControl());

}

//显示完毕

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())

{

//登陆成功

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控件便可以使用了。

(需要声明一下,由于编写Server控件时不能使用Session等变量,以至无法做到两个class之间的通信,因此在缺省状态下Footer控件并不能像前面的程序一样随Session内容发生改变,不过可以通过普通操作Server控件的方法来操作相应的属性达到相同的效果,此处为节约版面,未采用)

下面再来看看主体Web Form的程序内容:































怎么样,相当简单明了吧。

引用我们自定义的控件,也相当简洁,只需将Register指令的TagPrefix、Namespace、Assembly属性全部设定为aspcn。



至此,ASP.Net中三种代码与页面构架分离的方法已经介绍完毕。



三种方法各有优劣,本人比较倾向于使用用户控件与CodeBinde技术结合使用,因为他们均不需要编译,相对来说更容易使用,如果您要保护你的代码,自定义控件则当然是您最佳的选择。



希望本文对您的编程有所帮助。





上一页  [1] [2] [3] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:14,984.38000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号