使用数据库的 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 日。发布初始版本。