热 门 文 章

相关广告

最 新 资 讯

热 门 资 讯

您现在的位置: 我爱D公文网 >> 公文写作 >> 论文中心 >> 综合论文 >> 计算机 >> 正文
站内文章搜索:

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

发表文章   作者:佚名   更新时间:2008-6-22

erver" /></td></tr>
<tr><td><asp:Button id="btnSubmit" Text="登陆" OnClick="Submit_Click" runat="server" /></td></tr>
</table>

Footer.ascx(Footer用户控件)

<Script Language="C#" Runat="Server">
private void Page_Load(Object src,EventArgs e)
{
if(Session["UserName"]!=null)
{
lblUserName.Text = (string)Session["UserName"];
lblPurview.Text = (string)Session["Purview"];
}
}
</script>
用户名:<asp:Label id="lblUserName" Font-Name="Arial" ForeColor="red" Text="游客" runat="server" />

权限:<asp:Label id="lblPurview" Font-Name="Arial" Text="无" ForeColor="red" runat="server" />

每个控件包含有自已的显示代码以及相应的程序代码。

我们可以将一些常用的功能制作成为固定的用户控件,当需要时,我们就可直接拿来使用,而不需要使用烦人的Crtl+C,Ctrl+V来"复制"、"粘贴"长长的一大堆代码。

用户控件不仅做到了程序代码与页面构架的分离,而且还增加了代码重用性。

3 自定义控件(Custom Control)

用户控件是很不错的选择,但是由于每个用户控件都是一个ascx文件,当这些控件很多时,它们的使用就显得比较零乱。此时我们便想可不可以将一些比较相似的控件整合起来,在程序中只需要引用一次,便全部搞定。这是个很不错的想法,我们把这个想法说得更加专业一些:"将多个类(class)导入同一个命名空间(namespace)"。呵呵,怎么样,这句话是不是有点有耳熟?大家快去查一查Server控件的定义,是不是发现这句话是...

我们下面就要接触如何写Server控件。编写Server控件并不是一件轻松容易的事情,需要对.Net平台有比较深的了解,适合于高级用户,因此这里本人也不会具体描述Server控件的编写步骤(要细细讲这个,非得写书不可)。请大家比较一下自定义控件源代码与用户控件的区别,作一些大致的了解:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace aspcn

//首先是Header
public class Header:Control,INamingContainer
{
private AdRotator ad;
private Label lblAdText;

protected override void CreateChildControls()
{
//加入AdRotator广告控件
ad = new AdRotator();
ad.AdvertisementFile = "AdBanners/ad.xml";
ad.BorderWidth = 0;
ad.AdCreated += new AdCreatedEventHandler(this.OnAdCreated);
this.Controls.Add(ad);


this.Controls.Add(new LiteralControl("<br>"+"当前广告链接为:"));
//加入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("<table><tr><td colspan=\"2\" align=\"center\"><b>登陆窗口</b></td></tr> <tr><td colspan=\"2\" align=\"center\">"));
//添加MsgShow Label控件d199.com免费提供
lblMsgShow = new Label(); 
lblMsgShow.ForeColor = Color.Red;
this.Controls.Add(lblMsgShow);
this.Controls.Add(new LiteralControl("</td></tr><tr><td>用户名:</td><td>"));
//添加UserName与Passwd TextBox控件
tbUserName = new TextBox();
this.Controls.Add(tbUserName);
this.Controls.Add(new LiteralControl("</td></tr><tr><td>密码:</td><td>"));
tbPasswd = new TextBox();
tbPasswd.TextMode = TextBoxMode.Password;
this.Controls.Add(tbPasswd);
this.Controls.Add(new LiteralControl("</td></tr><tr><td>"));
//添加BtnSubmit Button控件
Button btnSubmit = new Button();
btnSubmit.Text = "登陆";
btnSubmit.Click += new EventHandler(this.Submit_Click);
this.Controls.Add(btnSubmit);
this.Controls.Add(new LiteralControl("</td></tr></table>"));
}
//显示完毕
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.lblMsgS

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

写作版权归原作者所有,如需转载或摘录请注明出处:我爱D公文网

点击数: