第一讲

⒈首先是关于日历的问题,要在初始化页面的代码段中写入Calendar1.SelectedDate=DateTime.Now来初始化日历控件使其显示的日期为当前的日期。

⒉另外是广告,广告控件设计到一个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文件的前台代码中写入
<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中,代码如下:
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();
第三:用图片将计数器里面的数字表示出来。代码如下:
 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            }
在这里需要学习的在于动态生成图片的原理。
第四: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文件包含在项目中,是一个文本文件,用来存储逻辑代码:如
 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文件里面的所有方法以及变量就可以被页面里面的对象调用了。

posted on 2007-04-29 10:09  清风徐来,水波不兴  阅读(261)  评论(0编辑  收藏  举报

导航