AdRotator Web 服务器控件可用于显示链接到其他页的图形。要显示的图形列表和关联的目标链接将保留在数据源中,如 XML 文件或数据库。
1、方案
AdRotator Web 服务器控件提供一种在 ASP.NET 网页上显示广告的方法。该控件可显示您提供的 .gif 文件或其他图形图像。当用户单击广告时,系统会将他们重定向到指定的目标 URL。该控件会从您使用数据源(通常是 XML 文件或数据库表)提供的广告列表中自动读取广告信息,如图形文件名和目标 URL。
AdRotator 控件会随机选择广告,每次刷新页面时都将更改显示的广告。广告可以加权以控制广告条的优先级别,这可以使某些广告的显示频率比其他广告高。也能编写在广告间循环的自定义逻辑。
2、背景
AdRotator Web 服务器控件可用于显示广告图形,如 .gif 或类似图像。然后可以将用户重定向到目标 URL。图形和目标 URL 可从数据源提供,如 XML 文件。
广告信息可来自各种源,如下所示:
·XML 文件。可以将广告信息存储在 XML 文件中,此文件包含对广告横幅及其关联属性的引用。
·任何数据源控件,如 SqlDataSource 或 ObjectDataSource 控件。例如,可以将广告信息存储在数据库中,使用 SqlDataSource 控件检索广告信息,然后将 AdRotator 控件绑定到数据源控件。
自定义逻辑。可以为 AdCreated 事件创建处理程序,并在该事件过程中选择广告。
3、用于广告文件的 XML 文件格式
存储广告条图像位置、用于重定向的 URL 以及关联属性的一个方法是将这些信息放入一个 XML 文件中。通过使用 XML 文件格式,可以创建和维护一个广告清单,而不必在对某一广告进行更改时更改应用程序的代码。
4、用于广告文件的数据库架构
除了可以为广告信息创建一个 XML 文件之外,还可以将广告信息存储到一个数据库表中。该表需要一种 AdRotator 控件可以读取的特定架构。
5、通过关键字筛选广告
在广告文件中,可以通过如下方法指定广告的类别:使用 Keyword 属性,然后将 AdRotator 控件配置为根据您指定的筛选条件显示广告。例如,如果一个广告文件同时包含银行和硬件商店两个类别的广告,而您可能只希望页面显示与银行有关的广告。通过将 AdRotator 控件的 KeywordFilter 属性设置为“banks”(银行),可让该控件筛选掉硬件商店广告。
如果指定了筛选器,则会发生下面两种情况之一:
·如果 AdRotator 控件可以找到带有匹配关键字的广告,则显示一条带有该关键字的广告。
·如果不存在关键字的匹配项,则 AdRotator 控件将在浏览器中显示一幅空白图像。
6、跟踪广告响应
AdRotator 控件本身不提供收集统计信息(比如用户已点击哪些广告,某一广告的点击次数等)的方法。但是,因为可以控制广告所指向的 URL,所以可在应用程序中为广告添加跟踪逻辑。典型的实现方法是将所有广告都指向一个跟踪页,在此页上首先收集需要的统计信息,然后再跳转到广告的目标页上。
7、缓存广告
如果缓存了包含 AdRotator 控件的页面,则每当从缓存中检索该页时,AdRotator 控件都将自动执行缓存替换,将缓存的广告替换为新广告。
8、类参考
下表列出了与 AdRotator 控件相关的类。
成员 | 说明 |
控件的主类。 | |
9、如何:使用 AdRotator Web 服务器控件显示 XML 文件中的广告
AdRotator Web 服务器控件可从有一条或多条广告记录的数据源读取广告信息。您可以将信息存储在一个 XML 文件中,然后将 AdRotator 控件绑定到该文件。
AdRotator 控件的所有属性都是可选的。XML 文件中可以包括下列属性:
·ImageUrl 要显示的图像的 URL。
·NavigateUrl 单击 AdRotator 控件时要转到的网页的 URL。
·AlternateText 图像不可用时显示的文本。
·Keyword 可用于筛选特定广告的广告类别。
·Impressions 一个指示广告的可能显示频率的数值(加权数值)。在 XML 文件中,所有 Impressions 值的总和不能超过 2,048,000,000 - 1。
·Height 广告的高度(以像素为单位)。此值会重写 AdRotator 控件的默认高度设置。
·Width 广告的宽度(以像素为单位)。此值会重写 AdRotator 控件的默认宽度设置。
A、创建广告列表作为 XML 文件
·在网站的 App_Data 文件夹中创建一个新的 XML 文件。为了更好地保证安全,请将该文件的文件扩展名命名为除 .xml 之外的名称,如 .ads。
说明: 建议您将广告文件放置在 App_Data 文件夹中,原因是 ASP.NET 可防止浏览器利用该文件夹中的文件。
·向文件中添加下列 XML 元素:
<?xml version="1.0" encoding="utf-8" ?>
<Advertisements xmlns="http://schemas.microsoft.com/AspNet/AdRotator-Schedule-File">
</Advertisements>
·在 Advertisements 元素中,为每个要包括在广告列表中的广告创建一个 Ad 元素,然后保存文件。
下面是一个文件示例:
<?xml version="1.0" encoding="utf-8" ?>
<Advertisements xmlns="http://schemas.microsoft.com/AspNet/AdRotator-Schedule-File">
<Ad>
<ImageUrl>~/images/Contoso_ad.gif</ImageUrl>
<NavigateUrl>http://www.contoso-ltd.com</NavigateUrl>
<AlternateText>Ad for Contoso, Ltd. Web site</AlternateText>
<Impressions>100</Impressions>
</Ad>
<Ad>
<ImageUrl>~/images/Aspnet_ad.gif</ImageUrl>
<NavigateUrl>http://www.asp.net</NavigateUrl>
<AlternateText>Ad for ASP.NET Web site</AlternateText>
<Impressions>50</Impressions>
</Ad>
</Advertisements>
B、从数据库显示广告
·在 ASP.NET 网页上要显示广告的位置放置一个 AdRotator。
·将 AdRotator 控件的 AdvertisementFile 属性设置为您在前面的过程中创建的 XML 文件的路径。
说明: 建议您使用相对 URL,以使应用程序的可移植性更好。使用类似 ~/App_Data/文件名.ad 的语法。运行网页时,AdRotator 控件会读取 XML 广告文件,并选择一个广告进行显示。
10、如何:使用 AdRotator Web 服务器控件显示数据库中的广告
AdRotator 控件可从包含一条或多条广告记录的数据源读取广告信息。您可以将广告信息存储在具有特定架构的数据库表中,然后在运行时使用数据源控件读取广告记录。如果有一个带有广告信息的现有表,则可以将该表的架构映射到 AdRotator 控件所需的字段。
只要数据库有对应的数据源控件,就可以将广告信息存储在任何类型的数据库中。
A、创建广告数据库表
·如果还没有包含广告信息的数据库表,请创建具有下列架构的表。除 ID 之外的所有列均是可选的。
说明: | ||
提供的数据类型是 SQL Server 类型。如果使用的是不同的数据库,请替换相应的合适类型。 | ||
列名称 | 数据类型 | 说明 |
ID | int | 这是主键。此列可给定任何名称。 |
ImageUrl | nvarchar(length) | 要作为广告显示的图像的相对或绝对 URL。 |
NavigateUrl | nvarchar(length) | 广告的目标 URL。如果没有提供值,则广告不是一个超链接。 |
AlternateText | nvarchar(length) | 找不到图像时显示的文本。有些浏览器中,该文本还会作为工具提示显示出来。替换文字也用于辅助功能,以便无法看到图形的用户可以听到大声读出的说明。 |
Keyword | nvarchar(length) | 可作为页筛选依据的广告类别。 |
Impressions | int(4) | 一个指示广告的可能显示频率的数字。数字越大,显示该广告的频率越高。在 XML 文件中,所有 Impressions 值的总和不能超过 2,048,000,000 - 1。 |
Width | int(4) | 图像的宽度(以像素为单位)。 |
Height | int(4) | 图像的高度(以像素为单位)。 |
·如果有一个带有广告信息的现有数据库表,请设置 AdRotator 控件的下列属性,将数据库表架构映射到该控件所需的字段:
·在带有广告信息的表中插入新记录。
B、从数据库显示广告
·在网页上放置一个数据源控件,如 SqlDataSource 或 AccessDataSource 控件。
·使用连接字符串和查询配置数据源控件,从先前创建的数据库表选择所有记录。
·在要显示广告的 ASP.NET 网页上放置一个 AdRotator 控件。
·将 AdRotator 控件的 DataSourceID 属性设置为先前在步骤 1 中创建的数据源控件的 ID。 当网页运行时,AdRotator 控件将查询数据库,看是否有广告并选择一条广告进行显示。
11、如何:以编程方式在 AdRotator Web 服务器控件中选择广告
使用 AdRotator Web 服务器控件,可以通过在 AdCreated 事件处理程序中创建自定义逻辑来动态选择广告。
使用 AdCreated 事件选择广告
·为 AdRotator 控件创建 AdCreated 事件处理程序。 在该处理程序中传递的第二个参数包含对要创建的广告的引用。
·设置广告对象的属性,以指定要显示的广告的图像和定位 URL。 下面的示例演示如何设置 AdCreatedEventArgs 控件的 ImageUrl、NavigateUrl 和 AlternateText 属性:
protected void AdRotator1_AdCreated (object sender,
System.Web.UI.WebControls.AdCreatedEventArgs e)
{
e.ImageUrl = "images/contoso_ad.gif";
e.NavigateUrl = "http://www.contoso-ltd.com/";
e.AlternateText = "Ad for Contoso, Ltd Web site";
}