⒉另外是广告,广告控件设计到一个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

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31


ImageUrl节点中的内容,
NavaigateUrl为点击图片的时候指向的超链接地址,
AlternateText指鼠标悬停在图片上的时候显示的文字,
Keyword为分类,
Impressions为每次刷新广告显示的几率
⒊计数器:
在计数器这个单项里面值得注意的有四点。
第一:在Global.asax.cs里面的一些事件里面写下相应的处理方法。例如:Application_Start事件里面对应的是应用程序开始运行的时候触发的事件。Session_Start事件对应每次会话开始的时候发生,而Session_End事件则在会话结束时发生。
第二:在邵老师计数器的解决方案中,采取的是读取Counter.txt文本文件中的数字来表示和记录网站访问人数的:首先在Application_Start事件中读取已经存在的数据,代码如下:
1
StreamReader 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

3

4

5

6

1
Application.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

3

4

5

6

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

3

4

5

6

7

8

9

10

11

12

13

14

15

第四:Html代码依赖后台处理代码的不同方式。这里就涉及到AutoEventWireup属性了,这个属性一般写在* aspx文件的代码顶部,如下所示:

默认的AutoEventWireup的属性值为true,此时该页面依赖的逻辑代码写在前台脚本中,如果声明为true以后,则逻辑代码写在Codebehind的属性值所指的*.cs文件中。
将代码写在后台*.cs文件中是常见的方法,而将代码写在前台页面中的时候,则不能写太长以免影响前台代码的可阅读性,这样,就可以利用语句
1
<head>
2
<Title>使用全站点计数器</Title>
3
<!--#Include file="GlobCount.inc"-->
4
<script language="c#" runat="server">
5
private void TestT(Object sender,System.EventArgs e)
6
{
7
Test();
8
}
9
</script>
10
</head>
这里的inc文件包含在项目中,是一个文本文件,用来存储逻辑代码:如

2

3

4

5

6

7

8

9

10

1
<script language=c# runat="server">
2
void 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
}
20
void Test()
21
{
22
Response.Write("aa");
23
}
24
</script>
这样,*.inc文件里面的所有方法以及变量就可以被页面里面的对象调用了。

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24
