ASP.Net中程序构架与程序代码的分离 2
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>
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 = ne
w AdRotator();
ad.AdvertisementFile = "AdBanners/ad.xml";
ad.BorderWidth = 0;
ad.AdCreated += new&nb 《ASP.Net中程序构架与程序代码的分离 2(第5页)》