ASP.NET 高级控件——AdRotator控件

AdRotator控件

AdRotator Control

这个控件之所以被称为AdRotator,是因为它常用于在页面上显示广告。该控件从列表中随机显示一个图片。这个列表可以是存储在单独的XML文件或数据绑定的数据源中的。无论哪一种,列表都会包含图片的属性、路径及单击图片时链接到的URL。图片将在每次页面加载时更改。

除了从WebControl继承的属性外,表5-10列出了AdRotator控件包含的其他属性和事件。

5-10  AdRotator控件的属性和事件

 

 

 

AdvertisementFile

String

×

×

包含广告及广告属性列表的XML路径。该文件在后面详细介绍

AlternateTextField

String

×

×

广告文件或数据字段的元素名称,在其中储存了替换文本。默认值为AlternateText

DataMember

String

×

×

控件将绑定到的数据列表的名称

DataSource

Object

×

×

控件将要从中获取数据的对象

DataSourceID

String

×

×

控件将要从中获取数据的控件的ID

ImageUrlField

String

×

×

广告文件或数据字段的元素名称,其中储存了图片的URL。默认值为ImageUrl

 


续表5-10  AdRotator控件的属性和事件

 

 

 

KeywordFilter

String

×

×

从广告文件中筛选广告的类别关键字

NavigateUrlField

String

×

×

广告文件或数据字段的元素名称,在其中储存了要导航到的URL。默认值为NavigateUrl

Target

String

×

×

单击AdRotator时用于显示目录页面内容的浏览器窗口或框架

AdCreated

Event

 

 

在控件创建后、呈现页面前,在每个到服务器的往返行程过程中发生

Target属性用于指定由哪个浏览器窗口或框架显示单击AdRotator控件后的结果页面。它指定是否用结果页面替换当前浏览器窗口或框架中显示的当前内容,或是打开一个新浏览器窗口,或是其他的操作。Target属性的值必须以小写的az中的字符开头,区分大小写,但表5-11中指定的值除外,它们以下画线开头,并与HyperLink控件的Target属性值相同。

5-11  Target属性的特殊值

 

_blank

在除框架之外未命名的新窗口呈现内容

_new

未文档化。单击时的行为与_blank相同,只不过后续的单击将在同一个窗口呈现,而不用打开一个新窗口

_parent

在链接所在窗口或框架的父窗口或框架呈现内容。如果子容器是一个窗口或顶级的框架,则与_self相同

_self

在当前焦点所在的窗口或框架呈现内容。这是默认的行为

_top

在当前无框架的的整个窗口中呈现内容

广告文件

Advertisement File

广告文件是一个XML文件,它包含了AdRotator控件显示的广告有关的信息。该文件的位置和文件名由控件的AdvertisementFile属性指定。

广告文件的位置可以是相对于网站的根目录,也可以是绝对路径。如果它的位置不在同一网站中,则要确保应用程序有权访问该文件,尤其在部署之后。正因为如此以及其他的一些安全原因,最好把该文件放在web根目录下。

AdvertisementFile属性不能和DataSourceDataMemberDataSourceID属性同


时设置。换言之,如果数据来源于一个广告文件,它就不能同时来源于数据源,反之亦然。

广告文件和AdvertisementFile属性是可选的。如果不使用广告文件,而是要以编程方式创建一个广告,则需要在AdCreated的事件中输入代码以显示希望的元素。

由于是一个XML文件,所以广告文件是一个使用已定义好的,使用标签描述数据的结构化文本文件。表5-12列出了标准标签,它们都包含在尖括号(<  >)中,并需要一个匹配的关闭标签。

5-12  在广告文件中使用的XML

 

 

Advertisements

包含整个广告文件

Ad

描述每一个单独的广告

ImageUrl

要显示的图像的URL。必需

NavigateUrl

单击控件时定位到的URL

AlternateText

图像不可用时要显示的文本。在某些浏览器中,该文本显示为工具提示

Keyword

广告类别。该关键字可用于通过设置KeywordFilter属性过滤要显示的广告

Impressions

一个值,指示相对于XML文件中的其他广告,该广告显示的频率

提示:由于这是XML而非HTML,所以它比那些非结构化的文件更精简。这些标签都是区分大小写的:可以是ImageUrl,而ImageURL就不行。

关于结构化XML的完整描述,可参见第3章中良构的XHTML”侧栏。

除了表5-12列出的标签,也可以包含自定义的标签以便拥有自定义属性。示例5-13中的示例广告文件,包含了一个名为Animal自定义属性,它用于维护每本书封面的动物图片。

示例5-13ads.XML,示例广告文件

<Advertisements>

   <Ad>

      <ImageUrl>ProgAspNet.gif</ImageUrl>

      <NavigateUrl>

         http://www.oreilly.com/catalog/progaspdotnet2/index.html

      </NavigateUrl>

      <AlternateText>Programming ASP.NET</AlternateText>

      <Keyword>Web</Keyword>


      <Impressions>50</Impressions>

      <Animal>stingray</Animal>

   </Ad>

 

   <Ad>

      <ImageUrl>WinApps.gif</ImageUrl>

      <NavigateUrl>

         http://www.oreilly.com/catalog/pnetwinaps/index.html

      </NavigateUrl>

      <AlternateText>Programming .NET Windows Applications</AlternateText>

      <Keyword>Windows</Keyword>

      <Impressions>40</Impressions>

      <Animal>darter</Animal>

   </Ad>

 

   <Ad>

      <ImageUrl>ProgCSharp.gif</ImageUrl>

      <NavigateUrl>

         http://www.oreilly.com/catalog/progcsharp4/

      </NavigateUrl>

      <AlternateText>Programming C#</AlternateText>

      <Keyword>Language</Keyword>

      <Impressions>40</Impressions>

      <Animal>African Crowned Crane</Animal>

   </Ad>

 

   <Ad>

      <ImageUrl>ProgVB.gif</ImageUrl>

      <NavigateUrl>

         http://www.oreilly.com/catalog/progvb2005/

      </NavigateUrl>

      <AlternateText>Programming Visual Basic 2005</AlternateText>

      <Keyword>Language</Keyword>

      <Impressions>30</Impressions>

      <Animal>catfish</Animal>

   </Ad>

 

</Advertisements>

广告文件中所有的属性标签被分析后放到adProperties字典中。该字典可以用于以编程方式访问属性。无论是标准的或自定义的,都由AdCreated事件处理程序中的代码实现。

示例5-13显示了一个示例广告文件,它包含几本经典编程书籍的参考信息和网站。

使用AdRotator

Using AdRotator

现在需要的就是一个包含AdRotator控件的页面,该AdRotator控件将使用这个广告文件,如下面的示例AdRotatorDemo所示。以该名称创建一个新的网站后,拖放一


AdRotator控件到页面上,并添加几个Label控件来显示动物。内容文件看起来类似于示例5-14

示例5-14AdRotatoDemoDefault.aspx

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs"

   Inherits="_Default" %>

 

<!DOCTYPE html PUBLIC "-//W 3C //DTD XHTML 1.1//EN"

   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>AdRotator</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

      <h1>AdRotator Control</h1>

       <asp:AdRotator ID="ad" runat="server"

            Target="_blank"

            AdvertisementFile="ads.xml"

            OnAdCreated="ad_AdCreated" />

       <br />

       Animal:

       <asp:Label id="lblAnimal" runat="server"/>

    </div>

    </form>

</body>

</html>

在示例5-15的代码隐藏文件中高亮显示事件处理程序ad_AdCreated

示例5-15AdRotatorDemo网站的Default.aspx.cs

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

    }

 


    protected void ad_AdCreated(object sender, AdCreatedEventArgs e)

    {

       if ((string)e.AdProperties["Animal"] != "")

          lblAnimal.Text = (string)e.AdProperties["Animal"];

       else

          lblAnimal.Text = "n.a.";

    }

}

确保该广告文件的名称为ads.xml,并位于网站根目录下,根目录下还包括几个广告文件用到的图片文件:ProgAspNet.gifProgCSharp.gifProgVB.gif WinApps.gif

运行AdRotatorDemo的结果如图5-13所示。要看一下图片循环,在浏览器中刷新视图。

5-13AdRotatorDemo

该控件会引发AdCreated事件,该事件在每次回发到服务器且控件被创建之后呈现页面之前引发。控件声明中的OnAdCreated属性指定了该事件在引发时的事件处理程序。该事件处理程序传递一个AdCreatedEventArgs类型的参数,这个参数的属性在表5-13中列出。


5-13  AdCreateEventArgs类的属性

 

 

AdProperties

获取一个字典对象,该对象包含了广告文件中的所有对象

AlternateText

广告图片无效时显示的替换文本. 如果浏览器支持工具提示,该文本将显示为工具提示

ImageUrl

要显示的图片的URL

NavigateUrl

控件被单击时要显示的页面的URL

每次改变广告后(也就是说,每次页面重新加载时),这个事件处理程序ad_AdCreated被引发并更新页面上的lblAnimal控件。 ad_AdCreated首先检测Animal属性中是否有值,如果没有,则显示“n.a”(即“notavailable”)。

AdProperties属性返回一个Dictionary。当获取AdProperties属性时,它会隐式地调用Dictionary对象的Item方法,它返回一个与字典项相应的值,该字典项的关键字是Animal,该值然后被转换为字符串,在C#中,它使用下面的语法完成:

(string)e.AdProperties["Animal"]

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值