使用数据库的 Flash ASP.NET AdRotator






3.52/5 (14投票s)
实现一个 Flash ASP.NET AdRotator,从数据库获取广告。

引言
本文解释了 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 日。发布初始版本。


