/// <summary> /// 文档页 /// </summary> /// <returns></returns> public Task Archive(ICompatibleHttpContext context) { context.Response.ContentType("text/html;charset=utf-8"); CmsContext ctx = Cms.Context; //检测网站状态及其缓存 if (ctx.CheckSiteState() && ctx.CheckAndSetClientCache()) { context.Response.ContentType("text/html;charset=utf-8"); var path = context.Request.GetPath(); String archivePath = this.SubPath(path, ctx.SiteAppPath); archivePath = archivePath.Substring(0, archivePath.LastIndexOf(".", StringComparison.Ordinal)); DefaultWebOuput.RenderArchive(ctx, archivePath); } return(SafetyTask.CompletedTask); /* * bool eventResult = false; * if (OnArchiveRequest != null) * { * OnArchiveRequest(ctx, archivePath, ref eventResult); * } * * //如果返回false,则执行默认输出 * if (!eventResult) * { * DefaultWebOuput.RenderArchive(ctx, archivePath); * } */ }
/// <summary> /// 文档页 /// </summary> /// <returns></returns> public void Archive(string allHtml) { CmsContext ctx = base.OutputContext; //检测网站状态 if (!ctx.CheckSiteState()) { return; } //检查缓存 if (!ctx.CheckAndSetClientCache()) { return; } String archivePath = this.SubPath(allHtml, ctx.SiteAppPath); bool eventResult = false; if (OnArchiveRequest != null) { OnArchiveRequest(ctx, archivePath, ref eventResult); } //如果返回false,则执行默认输出 if (!eventResult) { DefaultWebOuput.RenderArchive(ctx, archivePath); } }
/// <summary> /// 栏目页 /// </summary> /// <param name="context"></param> /// <returns></returns> public Task Category(ICompatibleHttpContext context) { context.Response.ContentType("text/html;charset=utf-8"); CmsContext ctx = Cms.Context; //检测网站状态及其缓存 if (ctx.CheckSiteState() && ctx.CheckAndSetClientCache()) { var path = context.Request.GetPath(); var sitePath = ctx.SiteAppPath; // 如果为"/news/",跳转到"/news" var pLen = path.Length; if (path[pLen - 1] == '/') { context.Response.StatusCode(301); context.Response.AddHeader("Location", path.Substring(0, pLen - 1)); return(SafetyTask.CompletedTask); } // 验证是否为当前站点的首页 if (path == sitePath) { return(this.Index(context)); } String catPath = this.SubPath(path, sitePath); int page = 1; //获取页码和tag if (catPath.EndsWith(".html")) { var ls = catPath.LastIndexOf("/", StringComparison.Ordinal); var len = catPath.Length; var begin = ls + 1 + "list_".Length; var ps = catPath.Substring(begin, len - begin - 5); int.TryParse(ps, out page); catPath = catPath.Substring(0, ls); } DefaultWebOutput.RenderCategory(ctx, catPath, page); // //执行 // bool eventResult = false; // if (OnCategoryRequest != null) // { // OnCategoryRequest(ctx, catPath, page, ref eventResult); // } // // //如果返回false,则执行默认输出 // if (!eventResult) // { // DefaultWebOutput.RenderCategory(ctx, catPath, page); // } } return(SafetyTask.CompletedTask); }
/// <summary> /// 栏目页面 /// </summary> /// <param name="allCate"></param> /// <returns></returns> public void Category(string allCate) { CmsContext ctx = base.OutputContext; //检测网站状态 if (!ctx.CheckSiteState()) { return; } //检查缓存 if (!ctx.CheckAndSetClientCache()) { return; } String catPath = this.SubPath(allCate, ctx.SiteAppPath); //验证是否为当前站点的首页 if (catPath.Length == 0) { this.Index(); return; } int page = 1; if (catPath.IndexOf(".") != -1) { //获取页码和tag Regex paramRegex = new Regex("/*((.+)/(p(\\d+)\\.html)?|(.+))$", RegexOptions.IgnoreCase); Match mc = paramRegex.Match(catPath); if (mc.Groups[4].Value != "") { page = int.Parse(mc.Groups[4].Value); } catPath = mc.Groups[mc.Groups[2].Value != "" ? 2 : 5].Value; } // 去掉末尾的"/" if (catPath.EndsWith("/")) { catPath = catPath.Substring(0, catPath.Length - 1); } //执行 bool eventResult = false; if (OnCategoryRequest != null) { OnCategoryRequest(ctx, catPath, page, ref eventResult); } //如果返回false,则执行默认输出 if (!eventResult) { DefaultWebOuput.RenderCategory(ctx, catPath, page); } }
/// <summary> /// 呈现首页 /// </summary> /// <param name="context"></param> public static void RenderIndex(CmsContext context) { //检测网站状态 if (!context.CheckSiteState()) { return; } //检查缓存 if (!context.CheckAndSetClientCache()) { return; } SiteDto site = context.CurrentSite; int siteId = site.SiteId; string cacheId = String.Concat("cms_s", siteId.ToString(), "_index_page"); ICmsPageGenerator cmsPage = new PageGeneratorObject(context); if (context.Request["cache"] == "0") { Cms.Cache.Rebuilt(); } string html; if (Settings.Opti_IndexCacheSeconds > 0) { ICmsCache cache = Cms.Cache; object obj = cache.Get(cacheId); if (obj == null) { html = cmsPage.GetIndex(null); cache.Insert(cacheId, html, DateTime.Now.AddSeconds(Settings.Opti_IndexCacheSeconds)); } else { html = obj as string; } } else { //DateTime dt = DateTime.Now; html = cmsPage.GetIndex(null); //context.Render("<br />"+(DateTime.Now - dt).TotalMilliseconds.ToString() + "<br />"); } //response.AddHeader("Cache-Control", "max-age=" + maxAge.ToString()); context.Render(html); }
/// <summary> /// 呈现首页 /// </summary> /// <param name="context"></param> public static void RenderIndex(CmsContext context) { //检测网站状态 if (!context.CheckSiteState()) { return; } //检查缓存 if (!context.CheckAndSetClientCache()) { return; } SiteDto site = context.CurrentSite; int siteId = site.SiteId; string cacheId = String.Format("cms_s{0}_{1}_index_page", siteId, (int)Cms.Context.DeviceType); ICmsPageGenerator cmsPage = new PageGeneratorObject(context); if (context.Request["cache"] == "0") { Cms.Cache.Rebuilt(); } string html; if (Settings.Opti_IndexCacheSeconds > 0) { ICmsCache cache = Cms.Cache; object obj = cache.Get(cacheId); if (obj == null) { html = cmsPage.GetIndex(null); cache.Insert(cacheId, html, DateTime.Now.AddSeconds(Settings.Opti_IndexCacheSeconds)); } else { html = obj as string; } } else { html = cmsPage.GetIndex(null); } context.Render(html); }
/// <summary> /// 呈现首页 /// </summary> /// <param name="context"></param> public static void RenderIndex(CmsContext context) { //检测网站状态 if (!context.CheckSiteState()) return; //检查缓存 if (!context.CheckAndSetClientCache()) return; int siteID=context.CurrentSite.SiteId; string cacheID=String.Concat("cms_s",siteID.ToString(),"_index_page"); ICmsPageGenerator cmsPage=new PageGeneratorObject(context); if (context.Request["cache"] == "0") { Cms.Cache.Rebuilt(); } string html = String.Empty; if (Settings.Opti_IndexCacheSeconds > 0) { ICmsCache cache = Cms.Cache; object obj = cache.Get(cacheID); if (obj == null) { html = cmsPage.GetIndex(null); cache.Insert(cacheID, html, DateTime.Now.AddSeconds(Settings.Opti_IndexCacheSeconds)); } else { html = obj as string; } } else { //DateTime dt = DateTime.Now; html = cmsPage.GetIndex(null); //context.Render("<br />"+(DateTime.Now - dt).TotalMilliseconds.ToString() + "<br />"); } //response.AddHeader("Cache-Control", "max-age=" + maxAge.ToString()); context.Render(html); }
/// <summary> /// 呈现分类页 /// </summary> /// <param name="context"></param> /// <param name="tag"></param> /// <param name="page"></param> public static void RenderCategory(CmsContext context, string catPath, int page) { //检查缓存 if (!context.CheckAndSetClientCache()) { return; } int siteId = context.CurrentSite.SiteId; string html = String.Empty; CategoryDto category; ICmsPageGenerator cmsPage = new PageGeneratorObject(context); category = ServiceCall.Instance.SiteService.GetCategory(siteId, catPath); if (!(category.ID > 0)) { RenderNotFound(context); return; } //获取路径 string categoryPath = category.Path; string appPath = Cms.Context.SiteAppPath; string reqPath = context.Request.Path.Substring(1); if (appPath.Length > 1) { reqPath = reqPath.Substring(appPath.Length); } if (!reqPath.StartsWith(categoryPath)) { RenderNotFound(context); return; } /********************************* * @ 单页,跳到第一个特殊文档, * @ 如果未设置则最新创建的文档, * @ 如未添加文档则返回404 *********************************/ if (String.IsNullOrEmpty(category.Location)) { html = cmsPage.GetCategory(category, page); context.Render(html); } else { string url = category.Location; if (category.Location.IndexOf("://") != -1) { url = category.Location; } else { if (!category.Location.StartsWith("/")) { url = String.Concat(appPath, appPath.Length == 1?String.Empty:"/", category.Location); } } context.Response.Redirect(url, true); //302 } }
/// <summary> /// 访问文档 /// </summary> /// <param name="context"></param> /// <param name="allhtml"></param> public static void RenderArchive(CmsContext context, string allhtml) { string html; ArchiveDto archive = default(ArchiveDto); //检测网站状态 if (!context.CheckSiteState()) { return; } //检查缓存 if (!context.CheckAndSetClientCache()) { return; } var siteId = context.CurrentSite.SiteId; String archivePath = allhtml.Substring(0, allhtml.Length - ".html".Length); archive = ServiceCall.Instance.ArchiveService.GetArchiveByIdOrAlias(siteId, archivePath); if (archive.Id <= 0) { RenderNotFound(context); return; } // 如果设置了302跳转 if (!String.IsNullOrEmpty(archive.Location)) { string url; if (Regex.IsMatch(archive.Location, "^http://", RegexOptions.IgnoreCase)) { url = archive.Location; } else { if (archive.Location.StartsWith("/")) { throw new Exception("URL不能以\"/\"开头!"); } url = String.Concat(context.SiteDomain, "/", archive.Location); } context.Response.Redirect(url, true); //302 return; } ICmsPageGenerator cmsPage = new PageGeneratorObject(context); if (!FlagAnd(archive.Flag, BuiltInArchiveFlags.Visible)) { RenderNotFound(context); return; } CategoryDto category = archive.Category; if (!(category.ID > 0)) { RenderNotFound(context); return; } else { string appPath = Cms.Context.SiteAppPath; if (appPath != "/") { appPath += "/"; } if (FlagAnd(archive.Flag, BuiltInArchiveFlags.AsPage)) { string pattern = "^" + appPath + "[0-9a-zA-Z]+/[\\.0-9A-Za-z_-]+\\.html$"; string pagePattern = "^" + appPath + "[\\.0-9A-Za-z_-]+\\.html$"; if (!Regex.IsMatch(context.Request.Path, pagePattern)) { context.Response.StatusCode = 301; context.Response.RedirectLocation = String.Format("{0}{1}.html", appPath, String.IsNullOrEmpty(archive.Alias) ? archive.StrId : archive.Alias ); context.Response.End(); return; } } else { //校验栏目是否正确 string categoryPath = category.Path; string path = appPath != "/" ? allhtml.Substring(appPath.Length - 1) : allhtml; if (!path.StartsWith(categoryPath + "/")) { RenderNotFound(context); return; } /* * //设置了别名,则跳转 * if (!String.IsNullOrEmpty(archive.Alias) && String.Compare(id, archive.Alias, * StringComparison.OrdinalIgnoreCase) != 0) * { * context.Response.StatusCode = 301; * context.Response.RedirectLocation = String.Format("{0}{1}/{2}.html", * appPath, * categoryPath, * String.IsNullOrEmpty(archive.Alias) ? archive.StrId : archive.Alias * ); * context.Response.End(); * return; * } */ } //增加浏览次数 ++archive.ViewCount; ServiceCall.Instance.ArchiveService.AddCountForArchive(siteId, archive.Id, 1); //显示页面 html = cmsPage.GetArchive(archive); //再次处理模板 //html = PageUtility.Render(html, new { }, false); } // return html; context.Render(html); }
/// <summary> /// 呈现首页 /// </summary> /// <param name="context"></param> public static void RenderIndex(CmsContext context) { //检测网站状态 if (!context.CheckSiteState()) { return; } //检查缓存 if (!context.CheckAndSetClientCache()) { return; } SiteDto site = context.CurrentSite; //跳转 if (!String.IsNullOrEmpty(site.Location)) { //string url; //if (Regex.IsMatch(archive.Location, "^http://", RegexOptions.IgnoreCase)) //{ // url = archive.Location; //} //else //{ // if (archive.Location.StartsWith("/")) throw new Exception("URL不能以\"/\"开头!"); // url = String.Concat(context.SiteDomain, site.Location); //} context.Response.Redirect(site.Location, true); //302 return; } int siteID = site.SiteId; string cacheID = String.Concat("cms_s", siteID.ToString(), "_index_page"); ICmsPageGenerator cmsPage = new PageGeneratorObject(context); if (context.Request["cache"] == "0") { Cms.Cache.Rebuilt(); } string html = String.Empty; if (Settings.Opti_IndexCacheSeconds > 0) { ICmsCache cache = Cms.Cache; object obj = cache.Get(cacheID); if (obj == null) { html = cmsPage.GetIndex(null); cache.Insert(cacheID, html, DateTime.Now.AddSeconds(Settings.Opti_IndexCacheSeconds)); } else { html = obj as string; } } else { //DateTime dt = DateTime.Now; html = cmsPage.GetIndex(null); //context.Render("<br />"+(DateTime.Now - dt).TotalMilliseconds.ToString() + "<br />"); } //response.AddHeader("Cache-Control", "max-age=" + maxAge.ToString()); context.Render(html); }
/// <summary> /// 呈现分类页 /// </summary> /// <param name="context"></param> public static void RenderCategory(CmsContext context, string tag, int page) { //检查缓存 if (!context.CheckAndSetClientCache()) { return; } int siteId = context.CurrentSite.SiteId; string html = String.Empty; CategoryDto category; string allcate = context.Request.Path.Substring(1); ICmsPageGenerator cmsPage = new PageGeneratorObject(context); category = ServiceCall.Instance.SiteService.GetCategory(siteId, tag); if (!(category.Id > 0)) { RenderNotFound(context); return; } //获取路径 string categoryPath = category.UriPath; string appPath = AtNet.Cms.Cms.Context.SiteAppPath; string _path = appPath != "/" ? allcate.Substring(appPath.Length) : allcate; if (!_path.StartsWith(categoryPath)) { RenderNotFound(context); return; } /********************************* * @ 单页,跳到第一个特殊文档, * @ 如果未设置则最新创建的文档, * @ 如未添加文档则返回404 *********************************/ if (String.IsNullOrEmpty(category.Location)) { html = cmsPage.GetCategory(category, page); context.Render(html); } else { string url; if (Regex.IsMatch(category.Location, "^http://", RegexOptions.IgnoreCase)) { url = category.Location; } else { if (category.Location.StartsWith("/")) { throw new Exception("URL不能以\"/\"开头!"); } url = String.Concat(context.SiteDomain, "/", category.Location); } context.Response.Redirect(url, true); //302 //context.Response.StatusCode = 301; //context.Render(@"<html><head><meta name=""robots"" content=""noindex""><script>location.href='" + // url + "';</script></head><body></body></html>"); } }
/// <summary> /// 访问文档 /// </summary> /// <param name="context"></param> /// <param name="allhtml"></param> public static void RenderArchive(CmsContext context, string allhtml) { string id = null; string html; ArchiveDto archive = default(ArchiveDto); //检测网站状态 if (!context.CheckSiteState()) { return; } //检查缓存 if (!context.CheckAndSetClientCache()) { return; } var siteId = context.CurrentSite.SiteId; ICmsPageGenerator cmsPage = new PageGeneratorObject(context); Regex paramRegex = new Regex("/*([^/]+).html$", RegexOptions.IgnoreCase); if (paramRegex.IsMatch(allhtml)) { id = paramRegex.Match(allhtml).Groups[1].Value; archive = ServiceCall.Instance.ArchiveService.GetArchiveByIdOrAlias(siteId, id); } if (archive.Id <= 0) { RenderNotFound(context); return; } else { //跳转 if (!String.IsNullOrEmpty(archive.Location)) { string url; if (Regex.IsMatch(archive.Location, "^http://", RegexOptions.IgnoreCase)) { url = archive.Location; } else { if (archive.Location.StartsWith("/")) { throw new Exception("URL不能以\"/\"开头!"); } url = String.Concat(context.SiteDomain, "/", archive.Location); } context.Response.Redirect(url, true); //302 //context.Response.StatusCode = 301; //context.Render(@"<html><head><meta name=""robots"" content=""noindex""><script>location.href='" + // url + "';</script></head><body></body></html>"); return; } BuiltInArchiveFlags flag = ArchiveFlag.GetBuiltInFlags(archive.Flags); if ((flag & BuiltInArchiveFlags.Visible) != BuiltInArchiveFlags.Visible) //|| (flag & BuiltInArchiveFlags.IsSystem)== BuiltInArchiveFlags.IsSystem) //系统文档可以单独显示 { RenderNotFound(context); return; } CategoryDto category = archive.Category; if (!(category.Id > 0)) { RenderNotFound(context); return; } else { string appPath = AtNet.Cms.Cms.Context.SiteAppPath; if (appPath != "/") { appPath += "/"; } if ((flag & BuiltInArchiveFlags.AsPage) == BuiltInArchiveFlags.AsPage) { string pattern = "^" + appPath + "[0-9a-zA-Z]+/[\\.0-9A-Za-z_-]+\\.html$"; string pagePattern = "^" + appPath + "[\\.0-9A-Za-z_-]+\\.html$"; if (!Regex.IsMatch(context.Request.Path, pagePattern)) { context.Response.StatusCode = 301; context.Response.RedirectLocation = String.Format("{0}{1}.html", appPath, String.IsNullOrEmpty(archive.Alias) ? archive.StrId : archive.Alias ); context.Response.End(); return; } } else { //校验栏目是否正确 string categoryPath = category.UriPath; string _path = appPath != "/" ? allhtml.Substring(appPath.Length - 1) : allhtml; if (!_path.StartsWith(categoryPath + "/")) { RenderNotFound(context); return; } //设置了别名,则跳转 if (!String.IsNullOrEmpty(archive.Alias) && String.Compare(id, archive.Alias, true) != 0) { context.Response.StatusCode = 301; context.Response.RedirectLocation = String.Format("{0}{1}/{2}.html", appPath, categoryPath, String.IsNullOrEmpty(archive.Alias) ? archive.StrId : archive.Alias ); context.Response.End(); return; } } //增加浏览次数 ++archive.ViewCount; new System.Threading.Thread(() => { try { ServiceCall.Instance.ArchiveService.AddCountForArchive(siteId, archive.Id, 1); } catch { } }).Start(); //显示页面 html = cmsPage.GetArchive(archive); //再次处理模板 //html = PageUtility.Render(html, new { }, false); } } // return html; context.Render(html); }
/// <summary> /// 呈现分类页 /// </summary> /// <param name="context"></param> /// <param name="allcate"></param> public static void RenderCategory(CmsContext context, string tag, int page) { //检查缓存 if (!context.CheckAndSetClientCache()) return; int siteId = context.CurrentSite.SiteId; string html = String.Empty; CategoryDto category; string allcate = context.Request.Path.Substring(1); ICmsPageGenerator cmsPage = new PageGeneratorObject(context); category = ServiceCall.Instance.SiteService.GetCategory(siteId, tag); if (!(category.ID>0)) { RenderNotFound(context); return; } //获取路径 string categoryPath = category.UriPath; string appPath = Cms.Context.SiteAppPath; string _path = appPath != "/" ? allcate.Substring(appPath.Length) : allcate; if (!_path.StartsWith(categoryPath)) { RenderNotFound(context); return; } /********************************* * @ 单页,跳到第一个特殊文档, * @ 如果未设置则最新创建的文档, * @ 如未添加文档则返回404 *********************************/ if (String.IsNullOrEmpty(category.Location)) { html = cmsPage.GetCategory(category, page); context.Render(html); } else { string url; if (Regex.IsMatch(category.Location, "^http://", RegexOptions.IgnoreCase)) { url = category.Location; } else { if (category.Location.StartsWith("/")) throw new Exception("URL不能以\"/\"开头!"); url = String.Concat(context.SiteDomain, category.Location); /* if (category.Location.StartsWith("/")) throw new Exception("URL不能以\"/\"开头!"); string url=String.Concat(context.SiteDomain,category.Location); try { string temphtml = new WebClient().DownloadString(url); context.Render(temphtml); } catch(Exception exc) { context.Render("<span style='color:red'>定向到指定页面时报错,请打开<a href='" + url + "'>" + url + "</a>查看详情!</span>"); } context.HttpContext.Response.End(); */ } context.Render(@"<html><head><meta name=""robots"" content=""noindex""><script>location.href='" + url + "';</script></head><body></body></html>"); /* ArchiveDto a = ServiceCall.Instance.ArchiveService.GetSpecialArchives(siteId, category.Tag, 1).SingleOrDefault()?? ServiceCall.Instance.ArchiveService.GetArchivesByCategoryTag(siteId, category.Tag, 1).SingleOrDefault(); if (a == null) { RenderNotFound(context); return; } context.Response.StatusCode = 302; context.Response.RedirectLocation = String.Format("{0}{1}/{2}.html", appPath == "/" ? appPath : appPath + "/", categoryPath, String.IsNullOrEmpty(a.Alias) ? a.ID : a.Alias ); context.Response.End(); return; */ } }
/// <summary> /// 访问文档 /// </summary> /// <param name="context"></param> /// <param name="allhtml"></param> public static void RenderArchive(CmsContext context, string allhtml) { string id = null; int siteId; string html = String.Empty; ArchiveDto archive = default(ArchiveDto); CategoryDto category = default(CategoryDto); //检测网站状态 if (!context.CheckSiteState()) return; //检查缓存 if (!context.CheckAndSetClientCache()) return; siteId=context.CurrentSite.SiteId; ICmsPageGenerator cmsPage=new PageGeneratorObject(context); Regex paramRegex = new Regex("/*([^/]+).html$", RegexOptions.IgnoreCase); if (paramRegex.IsMatch(allhtml)) { id = paramRegex.Match(allhtml).Groups[1].Value; archive = ServiceCall.Instance.ArchiveService.GetArchiveByIdOrAlias(siteId, id); } if (archive.Id <= 0) { RenderNotFound(context); return; } else { BuiltInArchiveFlags flag = ArchiveFlag.GetBuiltInFlags(archive.Flags); if ((flag & BuiltInArchiveFlags.Visible) != BuiltInArchiveFlags.Visible) //|| (flag & BuiltInArchiveFlags.IsSystem)== BuiltInArchiveFlags.IsSystem) //系统文档可以单独显示 { RenderNotFound(context); return; } category = archive.Category; if (!(category.ID>0)) { RenderNotFound(context); return; } else { string appPath = Cms.Context.SiteAppPath; if (appPath != "/") appPath += "/"; if ((flag & BuiltInArchiveFlags.AsPage) == BuiltInArchiveFlags.AsPage) { string pattern = "^" + appPath + "[0-9a-zA-Z]+/[\\.0-9A-Za-z_-]+\\.html$"; string pagePattern = "^" + appPath + "[\\.0-9A-Za-z_-]+\\.html$"; if (!Regex.IsMatch(context.Request.Path, pagePattern)) { context.Response.StatusCode = 301; context.Response.RedirectLocation = String.Format("{0}{1}.html", appPath, String.IsNullOrEmpty(archive.Alias) ? archive.StrId : archive.Alias ); context.Response.End(); return; } } else { //校验栏目是否正确 string categoryPath = category.UriPath; string _path = appPath != "/" ? allhtml.Substring(appPath.Length - 1) : allhtml; if (!_path.StartsWith(categoryPath + "/")) { RenderNotFound(context); return; } //设置了别名,则跳转 if (!String.IsNullOrEmpty(archive.Alias) && String.Compare(id, archive.Alias, true) != 0) { context.Response.StatusCode = 301; context.Response.RedirectLocation = String.Format("{0}{1}/{2}.html", appPath, categoryPath, String.IsNullOrEmpty(archive.Alias) ? archive.StrId : archive.Alias ); context.Response.End(); return; } } //增加浏览次数 ++archive.ViewCount; new System.Threading.Thread(() => { try { ServiceCall.Instance.ArchiveService.AddCountForArchive(siteId, archive.Id, 1); } catch { } }).Start(); //显示页面 html = cmsPage.GetArchive(archive); //再次处理模板 //html = PageUtility.Render(html, new { }, false); } } // return html; context.Render(html); }
/// <summary> /// 呈现分类页 /// </summary> /// <param name="context"></param> /// <param name="allcate"></param> public static void RenderCategory(CmsContext context, string tag, int page) { //检查缓存 if (!context.CheckAndSetClientCache()) { return; } int siteId = context.CurrentSite.SiteId; string html = String.Empty; CategoryDto category; string allcate = context.Request.Path.Substring(1); ICmsPageGenerator cmsPage = new PageGeneratorObject(context); category = ServiceCall.Instance.SiteService.GetCategory(siteId, tag); if (!(category.ID > 0)) { RenderNotFound(context); return; } //获取路径 string categoryPath = category.UriPath; string appPath = Cms.Context.SiteAppPath; string _path = appPath != "/" ? allcate.Substring(appPath.Length) : allcate; if (!_path.StartsWith(categoryPath)) { RenderNotFound(context); return; } /********************************* * @ 单页,跳到第一个特殊文档, * @ 如果未设置则最新创建的文档, * @ 如未添加文档则返回404 *********************************/ if (String.IsNullOrEmpty(category.Location)) { html = cmsPage.GetCategory(category, page); context.Render(html); } else { string url; if (Regex.IsMatch(category.Location, "^http://", RegexOptions.IgnoreCase)) { url = category.Location; } else { if (category.Location.StartsWith("/")) { throw new Exception("URL不能以\"/\"开头!"); } url = String.Concat(context.SiteDomain, category.Location); /* * if (category.Location.StartsWith("/")) throw new Exception("URL不能以\"/\"开头!"); * string url=String.Concat(context.SiteDomain,category.Location); * * try * { * string temphtml = new WebClient().DownloadString(url); * context.Render(temphtml); * } * catch(Exception exc) * { * context.Render("<span style='color:red'>定向到指定页面时报错,请打开<a href='" + * url + "'>" + url + "</a>查看详情!</span>"); * } * * context.HttpContext.Response.End(); */ } context.Render(@"<html><head><meta name=""robots"" content=""noindex""><script>location.href='" + url + "';</script></head><body></body></html>"); /* * ArchiveDto a = ServiceCall.Instance.ArchiveService.GetSpecialArchives(siteId, category.Tag, 1).SingleOrDefault()?? * ServiceCall.Instance.ArchiveService.GetArchivesByCategoryTag(siteId, category.Tag, 1).SingleOrDefault(); * * if (a == null) * { * RenderNotFound(context); * return; * } * context.Response.StatusCode = 302; * context.Response.RedirectLocation = String.Format("{0}{1}/{2}.html", * appPath == "/" ? appPath : appPath + "/", * categoryPath, * String.IsNullOrEmpty(a.Alias) ? a.ID : a.Alias * ); * context.Response.End(); * return; */ } }