1、实验3.1 内置对象的应用 目的与要求 (1) 熟练掌握Application、Session对象的使用。 (2) 熟练掌握Request、Response对象的使用。 (3) 熟练掌握Cookie对象的使用。 内容和步骤 【练习1】使用Application和Session对象统计在线人数(必做) (1) 启动Visual Studio 2010,使用Visual C# 语言新建一个ASP.NET网站。 (2) 在网站中添加Global.asax全局应用程序文件,要求应用程序生命周期开始时,初始化在线人数。新用户会话开始时,在线人数加1,会话结束时,在线人数减1。Globa
2、l.asax代码如下: void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 // 初始化 Application["counter"] = 0; } void Session_Start(object sender, EventArgs e) { …… } void Session_End(object sender, EventArgs e) { …… } (3
3、) 在Default.aspx网页设计视图中放置3个Label控件,所包含的控件及属性列于表T-1中。 表T-1 Default.aspx文件控件及其属性 控件类别 控件名 控件标识 属性 属性值 备注 Web控件 Label Label1 Text 统计在线人数 Label Label2 Text 当前在线人数为: Label Label3 Text (空) 用于显示计数值 在页面第一次加载时,将在线人数Application["counter"] 赋给Label3.Text,实现在界面显示在线人数。其代码如下: La
4、bel3.Text=Application["counter"].ToString (); (4) 运行程序,结果如图T.4所示。连续按下”刷新” 按钮,观察网页上在线人数的变化。 图T.4 运行结果 【练习2】利用Cookie对象统计IP地址登录次数。(必做) (1) 在练习1建立的网站中,新建页面IPCounter.aspx,在界面中添加一个文本框和一个按钮。 (2) 当用户首次访问 IPCounter.aspx页面时,利用Cookie对象向客户端硬盘写入一个永不过期的Cookie,同时计数器置1;当用户再次访问时,读取Cookie并将计数器加1后再写入Cookie,这些功
5、能均在页面的Page_load()事件代码中实现,程序代码如下: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { …… } } (3) 在 IPCounter.aspx页面中,单击按钮即可在文本框中显示统计IP地址登录次数,按钮的单击事件代码如下: protected void Button1_Click(object sender, EventArgs e) {
6、 if (Request.Cookies["lastVisitCounter"] == null) { TextBox1.Text = "1"; } else { HttpCookie aCookie = Request.Cookies["lastVisitCounter"]; TextBox1.Text = Server.HtmlEncode(aCookie.Value); } } (4) 运行程
7、序,结果如图T.5所示。单击“统计”按钮,观察文本框中的值是否变化。 图T.5 运行结果 【练习3】统计网站的总访问量。(必做) (1) 在练习1建立的网站中,新建页面WebCounter.aspx,用来显示总访问量。 (2) 统计网站的总访问量主要是在Global.asax全局应用程序文件中实现,要利用Application对象来统计总访问量,另外要利用文件来保存总访问量。实现的技术要点是在应用程序启动时,从计数文件中读取总访问量的值;当用户会话启动时对总访问量加1后再写入counter.txt计数文件;当应用程序关闭时将当前的总访问量写入counter.txt文件。Global
8、asax程序代码如下: <%@ Application Language="C#" %> <%@ Import Namespace="System" %> <%@ Import Namespace="System.Collections" %> <%@ Import Namespace="System.ComponentModel " %> <%@ Import Namespace="System.Web" %> <%@ Import Namespace="System.Web.SessionState" %> <%@ Import Namespace=" System.IO
9、" %> (3) 在页面WebCounter.aspx中添加如下代码来显示总访问
10、量: 您是第<%=Application["webcounter"]%>位访问者 (4) 运行程序,结果如图T.6所示。页面中显示出总访问量值,当关闭浏览器后再次浏览本页面时,总访问量计数值将加1。 图T.6 运行结果 实验3.2 母版和主题 目的与要求 (1) 熟练掌握母版的使用方法。
11、2) 熟练掌握主题及皮肤的使用与切换方法。 内容和步骤 【练习1】母版应用及动态加载母版。(必做) (1) 启动Visual Studio 2008,使用Visual C# 语言新建一个ASP.NET网站,命名为“实验四”。 (2) 右键单击网站“实验四”,选择【添加新项】,在打开的对话框中选择【母版页】,创建母版页,命名为Master1.master。 图T.12 Master1设计界面 (3) 打开Master1.master,切换到【设计】视图,仿照图T.12进行母版页设计,放置一个表格用以布局,网页左侧上部放置一个Calendar控件,网页头部设计网站名称并在右侧添加
12、一个Image控件,脚部放置版权信息等,在适当位置放置两个ContenPalceHolder控件。根据喜好放置其他控件,设置控件属性。 (4) 新建另一个母版页Master2.master,切换到【设计】视图,仿照图T.13进行母版页设计,放置一个表格用以布局,网页左侧上部放置一个AdRotator控件,下部放置一个Calendar控件。网页头部设计网站名称,脚部放置版权信息等。在左侧和右侧适当位置放置两个ContenPalceHolder控件。根据喜好放置其他控件,设置控件属性。 (5) 右键单击网站“实验四”,添加新项,选择【Web窗体】,勾选右下角的复选框【选择母版页】,在弹出的对话
13、框中选择“Master1.master”,将新建的网页命名为sy1.aspx。设计网页,如图T.14所示,在左侧的Content中放置两个HyperLink控件,分别设置属性NavigateUrl为"sy1.aspx?master=master1"和"sy1.aspx?master=master2"。在右侧的Content中布置用于调查的表单:放置一个复选框列表控件CheckBoxList1并编辑ListItem;放置两个按钮控件Button1和Button2,分别用于提交和重选;放置一个标签控件Label1,用于显示调查结果。 图T.14 选择母版一的运行结果 图T.13 Maste
14、r2设计界面
(6) 双击“提交”按钮button1,为其添加Click事件代码:
protected void Button1_Click(object sender, EventArgs e)
{ int i;
string str = "你选择的是:
";
……
Label1.Text = str;
}
(7) 双击“重选”按钮button2,为其添加Click事件代码:
protected void Button2_Click(object sender, EventArgs e)
15、 { CheckBoxList1.ClearSelection(); Label1.Text = ""; } (8) 在网页的后台文件sy1.aspx.cs中添加Page_PreInit事件,设计切换母版的代码: protected void Page_PreInit(object sender, EventArgs e) { string mm = Request["master"]; if (mm == "master1") this.MasterPageF
16、ile = "master1.master"; else this.MasterPageFile = "master2.master"; } 图T.15 选择母版二的运行结果 (9) 保存sy1.aspx,调试,按F5运行网页,点击选择母版,查看效果分别如图T.14和T.15所示。 【练习2】主题应用与动态加载主题。(选做) (1) 在练习1建立的网站“实验四”中,新建文件夹App_Themes,右键单击App_Themes,选择【添加ASP.NET文件夹】,再选择【主题】,将出现的“主题1”文件夹重命
17、名为Theme1。右键单击Theme1,添加新项,选择【外观文件】,命名为SkinFile1.skin。右键单击Theme1,添加新项,选择【样式表】,命名为cssfile1.css。同样的方法创建Theme2及其外观文件和样式表文件。结构如图T.16。 图T.16 主题文件夹结构 (2) 在网站的默认网页Default1页面中,在【设计】视图下,分别拖放TextBox、Label、Button、Calendar、AdRotator、Image、HyperLink控件各一个,为了便于将来在皮肤文件中改造它,一行放置一个。在属性窗口中设置这些控件的外观属性,风格为暖色调。运行调试直至
18、色调风格满意为止。风格可参考图T.17。切换到【源】视图,复制控件代码至SkinFile1文件。去掉控件的ID属性,改造成皮肤文件代码如下:
19、TextBox>
22、extPrevStyle BackColor="#FF66CC" BorderColor="#CC00FF" />
23、yperLink runat="server" BackColor="#FFCCFF" BorderColor="#CC00CC" BorderStyle="Groove" BorderWidth="2px" Font-Bold="True" Font-Names="幼圆" Font-Size="Large" ForeColor="#0066FF"/>
(3) 打开cssfile1.css,在空白处单击右键,选择【添加样式规则】,添加需要设置的样式。在生成的样式内单击右键,选择【生成样式】。在弹出的对话框中分别设置【字体】、【块】等样式风格,格调仍旧为暖色调。重复这两步,直到符合需要的样 24、式添加生成完毕。cssfile1.css文件中部分代码如下:
BODY {
PADDING-RIGHT: 10px;
PADDING-LEFT: 10px;
FONT-SIZE: 14px;
PADDING-BOTTOM: 0px;
MARGIN: 10px 0px 10px 0px;
PADDING-TOP: 0px;
FONT-FAMILY: Arial;
BACKGROUND-COLOR: #ec98c9;
WORD-WRAP: break-word
}
table
{
font-family: 幼圆;
font-siz 25、e: larger;
background-color: #FFCCFF;
图T.17 选择Theme1的运行结果
}
(4) 仿照步骤2和3,设计另一个主题中的Theme2中的SkinFile2.skin和cssfile2.css,整体风格为冷色调。风格可参考图T.18。
(5) 在网站“实验四”中新建网页sy2.aspx,新建时使用母版,选择练习一中创建的母版二。参考图T.17设计内容页面,在左侧的Content中添加两个HyperLink控件,并分别设置分别设置属性NavigateUrl为"sy2.aspx?theme=1"和"sy2.aspx?theme=2"。在右侧的 26、Content中布置用于调查的表单:放置一个复选框列表控件CheckBoxList1并编辑ListItem;放置两个按钮控件Button1和Button2,分别用于提交和重选;放置一个标签控件Label1,用于显示调查结果。
(6) 双击“提交”按钮button1,为其添加Click事件代码:
protected void Button1_Click(object sender, EventArgs e)
{ int i;
string str = "你选择的是: 27、
图T.18 选择Theme2的运行结果
}
(7) 双击“重选”按钮button2,为其添加Click事件代码:
protected void Button2_Click(object sender, EventArgs e)
{
CheckBoxList1.ClearSelection();
Label1.Text = "";
}
(8) 在网页的后台文件sy2.aspx.cs中添加Page_PreInit事件,设计动态切换网站主题的代码:
protected void Page_PreInit(object sender, EventArgs e)
{
……
}
(9) 保存sy2.aspx,调试,按F5运行网页,点击切换网站皮肤,查看效果分别如图T.17和T.18所示。
";
……
Label1.Text = str;






