第一讲
⒈首先是关于日历的问题,要在初始化页面的代码段中写入Calendar1.SelectedDate=DateTime.Now来初始化日历控件使其显示的日期为当前的日期。
⒉另外是广告,广告控件设计到一个XML文件的问题。可以这样理解,广告控件的目的是将制定的XML文件以及有关的图片文件按设置显示出来。
比如说以下Ad.xml文件
ImageUrl节点中的内容,
NavaigateUrl为点击图片的时候指向的超链接地址,
AlternateText指鼠标悬停在图片上的时候显示的文字,
Keyword为分类,
Impressions为每次刷新广告显示的几率
⒊计数器:
在计数器这个单项里面值得注意的有四点。
第一:在Global.asax.cs里面的一些事件里面写下相应的处理方法。例如:Application_Start事件里面对应的是应用程序开始运行的时候触发的事件。Session_Start事件对应每次会话开始的时候发生,而Session_End事件则在会话结束时发生。
第二:在邵老师计数器的解决方案中,采取的是读取Counter.txt文本文件中的数字来表示和记录网站访问人数的:首先在Application_Start事件中读取已经存在的数据,代码如下:
第四:Html代码依赖后台处理代码的不同方式。这里就涉及到AutoEventWireup属性了,这个属性一般写在* aspx文件的代码顶部,如下所示:
⒉另外是广告,广告控件设计到一个XML文件的问题。可以这样理解,广告控件的目的是将制定的XML文件以及有关的图片文件按设置显示出来。
比如说以下Ad.xml文件
1<?xml version="1.0" encoding="utf-8" ?>
2<Advertisements>
3 <Ad>
4 <ImageUrl>./image/hp1.gif</ImageUrl>
5 <NavigateUrl>http://www.yesky.com</NavigateUrl>
6 <AlternateText>欢迎访问!</AlternateText>
7 <Keyword>Computers</Keyword>
8 <Impressions>4</Impressions>
9 </Ad>
10 <Ad>
11 <ImageUrl>./image/hp2.gif</ImageUrl>
12 <NavigateUrl>http://www.yesky.com</NavigateUrl>
13 <AlternateText>欢迎访问!</AlternateText>
14 <Keyword>Computers</Keyword>
15 <Impressions>3</Impressions>
16 </Ad>
17 <Ad>
18 <ImageUrl>./image/hp3.gif</ImageUrl>
19 <NavigateUrl>http://www.yesky.com</NavigateUrl>
20 <AlternateText>欢迎访问!</AlternateText>
21 <Keyword>Computers</Keyword>
22 <Impressions>2</Impressions>
23 </Ad>
24 <Ad>
25 <ImageUrl>./image/hp4.gif</ImageUrl>
26 <NavigateUrl>http://www.yesky.com</NavigateUrl>
27 <AlternateText>欢迎访问!</AlternateText>
28 <Keyword>Computers</Keyword>
29 <Impressions>1</Impressions>
30 </Ad>
31</Advertisements>
然后在我的default.aspx文件的前台代码中写入2<Advertisements>
3 <Ad>
4 <ImageUrl>./image/hp1.gif</ImageUrl>
5 <NavigateUrl>http://www.yesky.com</NavigateUrl>
6 <AlternateText>欢迎访问!</AlternateText>
7 <Keyword>Computers</Keyword>
8 <Impressions>4</Impressions>
9 </Ad>
10 <Ad>
11 <ImageUrl>./image/hp2.gif</ImageUrl>
12 <NavigateUrl>http://www.yesky.com</NavigateUrl>
13 <AlternateText>欢迎访问!</AlternateText>
14 <Keyword>Computers</Keyword>
15 <Impressions>3</Impressions>
16 </Ad>
17 <Ad>
18 <ImageUrl>./image/hp3.gif</ImageUrl>
19 <NavigateUrl>http://www.yesky.com</NavigateUrl>
20 <AlternateText>欢迎访问!</AlternateText>
21 <Keyword>Computers</Keyword>
22 <Impressions>2</Impressions>
23 </Ad>
24 <Ad>
25 <ImageUrl>./image/hp4.gif</ImageUrl>
26 <NavigateUrl>http://www.yesky.com</NavigateUrl>
27 <AlternateText>欢迎访问!</AlternateText>
28 <Keyword>Computers</Keyword>
29 <Impressions>1</Impressions>
30 </Ad>
31</Advertisements>
<asp:AdRotator id="adrot1" BorderWidth="1" runat="server" AdvertisementFile="Ad.xml" />
这样,在该页面显示的时候,就对应地显示出4张图片了,并且对应地址为xml文件中的ImageUrl节点中的内容,
NavaigateUrl为点击图片的时候指向的超链接地址,
AlternateText指鼠标悬停在图片上的时候显示的文字,
Keyword为分类,
Impressions为每次刷新广告显示的几率
⒊计数器:
在计数器这个单项里面值得注意的有四点。
第一:在Global.asax.cs里面的一些事件里面写下相应的处理方法。例如:Application_Start事件里面对应的是应用程序开始运行的时候触发的事件。Session_Start事件对应每次会话开始的时候发生,而Session_End事件则在会话结束时发生。
第二:在邵老师计数器的解决方案中,采取的是读取Counter.txt文本文件中的数字来表示和记录网站访问人数的:首先在Application_Start事件中读取已经存在的数据,代码如下:
1StreamReader sr=new StreamReader(Server.MapPath("Counter.txt"));
2 int iNum=int.Parse(sr.ReadLine());
3 Application.Lock();
4 Application["Counter"]=iNum;
5 Application.UnLock();
6 sr.Close();
然后在Session_Start事件中更新Application["Counter"]的值,并将其写回到Counter.txt中,代码如下:2 int iNum=int.Parse(sr.ReadLine());
3 Application.Lock();
4 Application["Counter"]=iNum;
5 Application.UnLock();
6 sr.Close();
1Application.Lock();
2 Application["Counter"]=Convert.ToInt32(Application["Counter"])+1;
3 Application.UnLock();
4 StreamWriter sw=new StreamWriter(Server.MapPath("Counter.txt"),false);
5 sw.Write(Application["Counter"]);
6 sw.Close();
第三:用图片将计数器里面的数字表示出来。代码如下:2 Application["Counter"]=Convert.ToInt32(Application["Counter"])+1;
3 Application.UnLock();
4 StreamWriter sw=new StreamWriter(Server.MapPath("Counter.txt"),false);
5 sw.Write(Application["Counter"]);
6 sw.Close();
1 System.Web.UI.WebControls.Image Img;
2 Label lbl;
3 string count ;
4 String graph;
5 lbl=new Label();
6 lbl.Text="该站点已被访问次数:";
7 Container.Controls.Add(lbl);
8 count =Application["Counter"].ToString();
9 for (int i=0;i<count.Length;i++)
10 {
11 Img=new System.Web.UI.WebControls.Image(); //动态生成Image控件
12 graph=count.Substring(i,1);
13 Img.ImageUrl=graph + ".gif";
14 Container.Controls.Add(Img); //加载到控件容器
15 }
在这里需要学习的在于动态生成图片的原理。2 Label lbl;
3 string count ;
4 String graph;
5 lbl=new Label();
6 lbl.Text="该站点已被访问次数:";
7 Container.Controls.Add(lbl);
8 count =Application["Counter"].ToString();
9 for (int i=0;i<count.Length;i++)
10 {
11 Img=new System.Web.UI.WebControls.Image(); //动态生成Image控件
12 graph=count.Substring(i,1);
13 Img.ImageUrl=graph + ".gif";
14 Container.Controls.Add(Img); //加载到控件容器
15 }
第四:Html代码依赖后台处理代码的不同方式。这里就涉及到AutoEventWireup属性了,这个属性一般写在* aspx文件的代码顶部,如下所示:
<%@ Page language="c#" Codebehind="Counter.aspx.cs" AutoEventWireup="false" Inherits="CASE1._2Counter.Counter"%>
默认的AutoEventWireup的属性值为true,此时该页面依赖的逻辑代码写在前台脚本中,如果声明为true以后,则逻辑代码写在Codebehind的属性值所指的*.cs文件中。
将代码写在后台*.cs文件中是常见的方法,而将代码写在前台页面中的时候,则不能写太长以免影响前台代码的可阅读性,这样,就可以利用语句
1<head>
2 <Title>使用全站点计数器</Title>
3 <!--#Include file="GlobCount.inc"-->
4 <script language="c#" runat="server">
5private void TestT(Object sender,System.EventArgs e)
6{
7 Test();
8}
9 </script>
10 </head>
这里的inc文件包含在项目中,是一个文本文件,用来存储逻辑代码:如
2 <Title>使用全站点计数器</Title>
3 <!--#Include file="GlobCount.inc"-->
4 <script language="c#" runat="server">
5private void TestT(Object sender,System.EventArgs e)
6{
7 Test();
8}
9 </script>
10 </head>
1<script language=c# runat="server">
2void GlobalGraph(Panel Container)
3 {
4 Image Img;
5 Label lbl;
6 string count ;
7 String graph;
8 lbl=new Label();
9 lbl.Text="该站点已被访问次数:";
10 Container.Controls.Add(lbl);
11 count =Application["Counter"].ToString();
12 for (int i=0;i<count.Length;i++)
13 {
14 Img=new Image(); //动态生成Image控件
15 graph=count.Substring(i,1);
16 Img.ImageUrl=graph + ".gif";
17 Container.Controls.Add(Img); //加载到控件容器
18 }
19}
20void Test()
21{
22 Response.Write("aa");
23}
24</script>
这样,*.inc文件里面的所有方法以及变量就可以被页面里面的对象调用了。
2void GlobalGraph(Panel Container)
3 {
4 Image Img;
5 Label lbl;
6 string count ;
7 String graph;
8 lbl=new Label();
9 lbl.Text="该站点已被访问次数:";
10 Container.Controls.Add(lbl);
11 count =Application["Counter"].ToString();
12 for (int i=0;i<count.Length;i++)
13 {
14 Img=new Image(); //动态生成Image控件
15 graph=count.Substring(i,1);
16 Img.ImageUrl=graph + ".gif";
17 Container.Controls.Add(Img); //加载到控件容器
18 }
19}
20void Test()
21{
22 Response.Write("aa");
23}
24</script>