广告位是站点中不可缺少的内容之中的一个。也是能直接给我们站点带来经济收益的内容之中的一个。
好的广告位不仅不会强宾压主,而会为我们的站点锦上添花。起到画龙点睛的作用。因此设计好广告位也是开发过程中一大重要环节。
近期在做一个珠宝检測站的项目,当中管理页面就涉及到了广告位管理,之前项目中也有不少有广告位的,但都不是自己负责。其大致思路就是要从管理页面上传对应的图片,而且要保存到数据库,然后从全部上传过的图片中选择一张显示到站点首页。原理并不太难,可是鉴于性能问题,我们仅仅须要数据库保存图片的路径就可以。
重点是在MVC+WCF这种框架之下。可能略微有点难度。经过网上博友的分享以及团队内交流,实现了最主要的上传和保存数据库功能。站点首页有五个广告位。因为广告位的位置以及尺寸不同,当然收费标准也是不一样的。哈哈~~我们初步设计每个广告位有单独的管理单元,我的详细实现是广告位的管理页面有五个Datagrad,每个表格用来显示数据库中保存的本类广告位的图片路径以及对应信息。
例如以下图:
表格中显示数据库全部数据,通过操作是否显示列的单选button来确定首先显示哪一张广告图片。(须要把单选button的name属性统一命名,整个表格的单选button设为一组)
这里我们重点说的就是文件上传,为什么仅仅在数据库保存路径而不直接保存图片呢?首先这是大多数开发者的做法,其次从一定程度上保存路径要比图片性能高一些。我实在MVC中实现的,话不多说。直接上代码。
View
<h2>上传文件</h2>
@using(Html.BeginForm("FileUpLoad","AdvertisementManage",FormMethod.Post,new{enctype="multipart/form-data"}))
{
<br />
@*输入赞助商名称*@<input type="text" name="AdvertisementName" />
@*上传文件*@<input type="file" name="file" />
@*提交*@<input type="submit" name="UploadFile" />
}
Controller
public ActionResult FileUpLoad()
{
HttpPostedFileBase file = Request.Files["file"];//获得上传文件
//推断文件内容是否为空
if (file != null)
{
string filePath = Path.Combine(HttpContext.Server.MapPath("../images"), Path.GetFileName(file.FileName)); //设置文件保存路径
file.SaveAs(filePath);//将文件保存到filePath路径下
Guid g = new Guid("6dc3f7db-f038-4c48-9564-0ac52e0e29c1");
//实例化viewmodel,给属性赋值
AdvertisementManageViewModel advertisement=new AdvertisementManageViewModel();
advertisement .AdvertisementID=System.Guid.NewGuid();
advertisement.AdvertisementName = Request.Form["AdvertisementName"];
advertisement.AdvertisementUrl = filePath;
advertisement.TimeStamp = DateTime.Now;
advertisement.UserID = g;
advertisement.IsEnable = 0;
var service = ServiceFactory.GetService();//声明WCF服务
var s = service.AddAdvertisement(advertisement);//调用服务端的加入方法,将广告内容保存到数据库
//假设保存成功,返回FileUpLoad视图
if (true)
{
return RedirectToAction("FileUpLoad", "AdvertisementManage");
}
}
else
{
//return Content("<script>alert('上传失败!')</script>");
return View();
}
}
效果图
以上这些都是眼下实现的功能,样式上和逻辑上都须要优化,简单的原理分享给大家。有不足之处请批评指正。