65.9K
CodeProject 正在变化。 阅读更多。
Home

使用数据库的 Flash ASP.NET AdRotator

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.52/5 (14投票s)

2008年4月5日

CPOL

3分钟阅读

viewsIcon

187366

downloadIcon

3940

实现一个 Flash ASP.NET AdRotator,从数据库获取广告。

Adrotator.JPG

引言

本文解释了 ASP.NET AdRotator 控件从数据库获取 Flash 广告信息,并通过 Previous/Next 按钮点击旋转广告的概念。本文还解释了如何将 Flash (.swf) 文件存储在数据库中,并按特定顺序显示广告。

使用数据库的优势

  • 数据库比将文件存储在 XML 中更容易维护广告。
  • 使用数据库中的标志可以轻松更新或维护活动的广告列表。
  • 添加任意数量的字段以存储有关广告的特定/公司信息。

理解 AdRotator

您可以使用 AdRotator 控件在网页上显示随机选择的广告横幅。 每次刷新页面时,显示的广告都会更改。

广告信息存储在一个单独的 XML 文件中。 XML 文件允许您维护广告及其相关属性的列表。 属性包括要显示的图像的路径、单击控件时要链接到的 URL、在图像不可用时显示的替换文本、关键字以及广告的频率。 此文件中的信息未经过 AdRotator 控件的验证。 为了防止广告执行恶意脚本,您应该始终在发布数据之前检查数据,或者仅接受来自受信任来源的广告信息。

XML 文件包含以下预定义的属性。 仅 ImageUrl 属性是必需的。

Attribute 描述
图片 URL 要显示的图像的 URL。
高度 图像的高度,以像素为单位(可选)。
宽度 图像的宽度,以像素为单位(可选)。
NavigateUrl 单击 AdRotator 控件时要导航到的页面的 URL。
AlternateText 如果图像不可用,则要显示的文本。 在某些浏览器中,此文本将显示为工具提示。
关键字 广告的类别。 这被 AdRotator 控件用来过滤特定类别的广告列表。
Impressions(展示次数) 一个值,指示广告在 XML 文件中与其他广告相比的显示频率。

使用以上属性在数据库中创建字段。

Create Table AdsDataTable 
( 
  OrderId int,
 br br br br br br br br br br   AlternateText VarChar(200), 
  ImageUrl VarChar(200), 
  NavigateUrl VarChar(200),
  IsAdActive bit 
)

您可以创建任意数量的字段来存储元数据...对于我的使用,我只创建了上述字段。

实现

.NET 中的基本 AdRotator 控件不支持 Flash。 因此,我已对其进行了修改以支持 Flash。 我正在使用的 DLL,AdRotator.dll,包含在示例 bin 目录中,并附有源代码。

AdRotator 使用 myAds.xml 作为数据源,这是一个 XML 文件...

<asp:AdRotator ID="AdRotator1" runat="server" AdvertisementFile="~/myAds.xml"/>

在代码隐藏文件 Page_Load 事件中,将 AdvertisementFile 替换为 DataSource

FlashAdRotator1.DataSource = GetAds(AdCount); 
FlashAdRotator1.DataBind();

创建 Next 和 Previous 按钮....

protected void NextBtn_Click(object sender, ImageClickEventArgs e)
{
   if (ViewState["Count"]!= null) 
   AdCount = (int)ViewState["Count"];
   AdCount = AdCount + 1; 
   ViewState["Count"]= AdCount; 
   NextBtn.Enabled = AdCount == TotalAds ? false : true; 
   PrevBtn.Enabled = AdCount >= 1 ? true : false; 
   FlashAdRotator1.DataSource = GetAds(AdCount);
   FlashAdRotator1.DataBind(); 
}

protected void PrevBtn_Click(object sender, ImageClickEventArgs e)
{
  if (ViewState["Count"] != null)
     AdCount = (int)ViewState["Count"];
  AdCount = AdCount - 1; 
  ViewState["Count"] = AdCount; 
  PrevBtn.Enabled = AdCount == 1 ? false : true; 
  NextBtn.Enabled = AdCount <= TotalAds ? true : false; 
  FlashAdRotator1.DataSource = GetAds(AdCount); 
  FlashAdRotator1.DataBind(); 
}

从数据库获取广告

private DataTable GetAds(int AdNo)
{ 
 string sql = "select AlternateText,ImageUrl, " + 
              "NavigateUrl from AdsDataTable where OrderId = " + 
              AdNo.ToString(); 
 SqlConnection con = new SqlConnection(
   ConfigurationManager.ConnectionStrings["AdsConnectionString"].ToString()); 
 SqlDataAdapter adsa = new SqlDataAdapter(sql, con);
 DataTable AdsTable = new DataTable(); adsa.Fill(AdsTable);
 return AdsTable;
}

通过这种方式,用户可以使用数据库存储广告并根据其偏好对广告进行分类。 此外,如果您不喜欢点击,您可以向其添加一个计时器控件,并设置秒数以自动旋转广告。

平台/安装

示例代码将在 VS2005 中与 AJAX 一起使用。 我还附带了示例数据库 MDF/LDF 文件。

历史

  • 2008 年 4 月 5 日。发布初始版本。
© . All rights reserved.