FYJ.Blogs开发系列(四)-后台文章Controller
FYJ.Blogs开发系列(五)-前台基页Controller
FYJ.Blogs开发系列(六)-前台主页Controller
FYJ.Blogs开发系列(七)-前台文章Controller
using Blogs.Entity; using Blogs.UI.Main.Models; using System; using System.Collections.Generic; using System.Data; using System.Web.Caching; using System.Web.Mvc; using System.Linq; using System.Xml; using FYJ.Web; using FYJ.Common; namespace Blogs.UI.Main.Controllers { public class BaseController : Controller { protected Blogs.IDAL.IBlog BlogDal { get { return FYJ.Web.IocFactory<Blogs.IDAL.IBlog>.Instance; } } protected Blogs.IDAL.IArticle ArticleDal { get { return FYJ.Web.IocFactory<Blogs.IDAL.IArticle>.Instance; } } protected BlogInfo Info { get { return RouteData.Values["blogInfo"] as BlogInfo; } } protected BlogUser CurrentUser { get { return BlogDal.GetCurrentUser(); } } protected string BlogID { get { return Info.blogID + ""; } } protected string ThemeName { get { return String.IsNullOrEmpty(Info.themeName) ? "Default" : Info.themeName; } } #region 私有 private string GetTongjiHtml(string blogID) { CacheDependency depend = new CacheDependency(Server.MapPath("~/App_Data/site.xml")); object tongji = FYJ.Web.CacheAccess.GetFromCache("tongji"); if (tongji == null) { XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("~/App_Data/site.xml")); tongji = doc.GetElementsByTagName("tongji")[0].InnerText; FYJ.Web.CacheAccess.SaveToCache("tongji", tongji, depend); } return tongji as string; } #endregion protected BlogPageModel GetModel() { DataSet ds = BlogDal.GetBlogDataSet(this.Info.blogID + ""); if (ds.Tables[0].Rows.Count > 0) { Models.BlogPageModel model = new BlogPageModel(); model.SitemapUrl = Info.BaseUrl + "/sitemap.xml"; model.linkScript = Info.linkScript; model.BlogTitle = ds.Tables[0].Rows[0]["blogTitle"].ToString(); model.Logo = ds.Tables[0].Rows[0]["blogLogo"].ToString(); model.Menus = ds.Tables[9].DataTableToModel<Entity.blog_tb_menu>(); model.BlogUrl = FYJ.Common.HttpHelper.GetRootPath(Request.Url.ToString()); model.NewArticles = this.DataTableToArticle(ds.Tables[1]); model.MostViewArticles = this.DataTableToArticle(ds.Tables[2]); model.MostCommentArticles = this.DataTableToArticle(ds.Tables[3]); model.Months = ds.Tables[4].DataTableToModel<MonthModel>(); model.categorys = ds.Tables[5].DataTableToModel<CategoryModel>(); model.Tags = ds.Tables[6].DataTableToModel<TagModel>(); model.ArticleCount = Convert.ToInt32(ds.Tables[7].Rows[0][0]); model.ViewCount = Convert.ToInt32(ds.Tables[7].Rows[0][1]); model.CommentCount = Convert.ToInt32(ds.Tables[7].Rows[0][2]); model.TopArticles = new List<ArticleModel>(); model.Title = ds.Tables[0].Rows[0]["blogTitle"].ToString(); model.LinkCollection = ds.Tables[10].DataTableToModel<LinkModel>(); model.RandomArticles = ds.Tables[11].DataTableToModel<ArticleModel>(); model.Social = ds.Tables[12].DataTableToModel<Entity.blog_tb_blog_social>().FirstOrDefault(); bool isNeedTongji = (Request.UserHostAddress != "127.0.0.1" && !Request.UserHostAddress.StartsWith("192.168.")); string fixTongji = "<script type=\"text/javascript\" src=\"http://fyj.me/service/visit.php?siteID=" + BlogID + "\"></script>"; fixTongji += "<a href=\"http://webscan.360.cn/index/checkwebsite/url/kecq.com\"><img border=\"0\" src=\"http://img.webscan.360.cn/status/pai/hash/d57c7254b581c09711deae524057ffaa\" /></a>"; if (isNeedTongji) { model.TongjiHtml = ds.Tables[0].Rows[0]["tongji"].ToString() + fixTongji; } else { //本地访问统计 if (System.Configuration.ConfigurationManager.AppSettings["isTongjiLocal"] == "true") { model.TongjiHtml = fixTongji; } } return model; } return null; } protected virtual IEnumerable<ArticleModel> DataTableToArticle(DataTable dt) { IEnumerable<ArticleModel> articles = dt.DataTableToModel<ArticleModel>(); int index = 0; foreach (ArticleModel item in articles) { item.Title = dt.Rows[index]["articleTitle2"].ToString(); if (dt.Columns.Contains("tagUrls") && dt.Rows[index]["tagUrls"] != null) { string[] tagUrls = dt.Rows[index]["tagUrls"].ToString().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); string[] tagDisplays = dt.Rows[index]["tagDisplays"].ToString().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); List<TagModel> list = new List<TagModel>(); for (int i = 0; i < tagUrls.Length; i++) { TagModel model = new TagModel { tagDisplay = tagDisplays[i], Url = tagUrls[i] }; list.Add(model); } item.TagCollection = list; } index++; } return articles; } } }