/// <summary> /// 文档发布时候发生 /// </summary> /// <param name="archive"></param> static void WatchService_OnArchivePublished(Archive archive) { return; if (archive == null) { return; } //更新标签链接 ArchiveUtility.UpdateArchiveTagLinks("/tags/{0}", archive, true); Category category = new CategoryBLL().Get(a => a.ID == archive.Cid); PageGenerator.Generate(PageGeneratorObject.ArchivePage, category, archive); }
/// <summary> /// 首页 /// </summary> public void Index() { PageGenerator.Generate(PageGeneratorObject.Default); }
/// <summary> /// 文档页 /// </summary> /// <param name="tag"></param> /// <param name="id"></param> /// <returns></returns> public string Archive(string tag, string id) { string html = String.Empty; Archive archive; Category category; archive = bll.Get(id); if (archive != null) { category = cbll.Get(a => a.ID == archive.Cid); if (category != null) { const string pattern = "^/[0-9a-zA-Z]+/[\\.0-9A-Za-z_-]+\\.html$"; const string pagePattern = "^/[\\.0-9A-Za-z_-]+\\.html$"; if (ArchiveFlag.GetFlag(archive.Flags, ArchiveInternalFlags.AsPage)) { if (!Regex.IsMatch(Request.Path, pagePattern)) { Response.StatusCode = 301; Response.RedirectLocation = String.Format("/{0}.html", String.IsNullOrEmpty(archive.Alias) ? archive.ID : archive.Alias ); Response.End(); return(null); } } else if (!Regex.IsMatch(Request.Path, pattern) || (String.Compare(tag, category.Tag, true) != 0 || //如果分类tag不对,则301跳转 (!String.IsNullOrEmpty(archive.Alias) && String.Compare(id, archive.Alias, true) != 0) )) //设置了别名 { Response.StatusCode = 301; Response.RedirectLocation = String.Format("/{0}/{1}.html", category.Tag, String.IsNullOrEmpty(archive.Alias) ? archive.ID : archive.Alias ); Response.End(); return(null); } //增加浏览次数 ++archive.ViewCount; new System.Threading.Thread(() => { try { bll.AddViewCount(archive.ID, 1); } catch { } }).Start(); //显示页面 html = PageGenerator.Generate(PageGeneratorObject.ArchivePage, category, archive); //再次处理模板 //html = PageUtility.Render(html, new { }, false); } } else { html = base.Render404(); } return(html); }
private TableViewPage GeneratePage( PageGenerator pageGenerator ) { var pageResult = pageGenerator.Generate( m_layoutedContainers, m_lastGeneratedPage ); // Replace the layouted containers. m_layoutedContainers.Clear(); m_layoutedContainers.AddRange( pageResult.LayoutedContainers ); m_layoutedContainers.Sort(); m_lastGeneratedPage = pageResult.PageInfo; return m_lastGeneratedPage; }