广告位管理
1.新建数据库 广告位表、广告表
广告表:Id,名字(Name,只是给管理员看的,不会显示到界面上),位置标识(PositionName,比如IndexHeader、IndexFooter,ViewThreadSeperator),广告类型(AdType,JavaScript、Image、Link)、JavaScript代码(JavaScriptCode,多行文本)、ImageUrl(广告图片的路径)、ImageTargetUrl(点击图片广告进入的路径)、LinkUrl(点击超链广告进入的路径)、LinkText(超链接的文本)。
精细化的:选择不同的广告类型,显示不同的参数项。(DataItemBound中监听ComboBox的改变事件,然后用JQuery实现hide、show控件,FindControl().ClientId通过JQuery操作)
不用做分页,全部显示。
广告位控件,UserControl。属性:PositionName。用户用的时候将广告位控件拖到aspx的合适位置,设置PositionName的值。随机显示一条广告数据中PositionName等于控件的PositionName的广告。
随机取N条数据,原理: SELECT TOP (5) Id, WordPattern, IsMod, IsForbid, ReplaceWord, NEWID() AS Expr1 FROM RP_FilterWords ORDER BY Expr1
代码: select top n * from T_Person order by newid()
2.添加页面 广告管理页面、 后台实现广告的增删改查 (文字广告、图片广告、代码广告)
3新建一个自定义广告控件
自定义广告空间代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; using RPSite.BLL; using System.Text; namespace RPSite.Ctrls { public partial class AdCtrl : System.Web.UI.UserControl { [DisplayName("广告位编号")] public int PositionId { get; set; } protected void Page_Load(object sender, EventArgs e) { //查找返回一个广告对象 把广告放置于相应的Position位置
var ad = new RP_AdBLL().GetRandomAdByPosition(PositionId); //如果为null,则一条广告都没有 if (ad == null) { return; } StringBuilder sb = new StringBuilder(); if (ad.AdType == 1)//文字广告 { sb.Append("<a href='").Append(ad.TextAdUrl) .Append("'>").Append(ad.TextAdText) .Append("</a>"); } else if (ad.AdType == 2)//图片广告 { sb.Append("<a href='").Append(ad.PicAdUrl) .Append("'>").Append("<img src='") .Append(ad.PicAdImgUrl).Append("'/>") .Append("</a>"); } else if (ad.AdType == 3)//代码广告 { sb.Append(ad.CodeAdHTML); } else { sb.Append("AdType错误!!!"); } litCode.Text = sb.ToString(); } } }
在页面中调用广告控件,并给予PositionId参数