/// <summary> /// 根据栏目层数取得栏目Url名称 /// </summary> /// <param name="level">栏目等级</param> /// <returns>栏目名称</returns> public string GetChannelName(string level) { string channelName = "default"; if (We7Helper.IsNumber(level)) { int index = int.Parse(level); if (index > 0) { string url = We7Helper.GetChannelUrlFromUrl(Request.RawUrl); int pos = 0; for (int i = 0, temp = 0; i <= index; i++) { temp = url.IndexOf("/", pos) + 1; if (temp == 0) { break; } else { pos = temp; } } url = url.Substring(0, pos); channelName = ChannelHelper.GetChannelUrlFromUrl(url, Context.Request.ApplicationPath); } } return(channelName); }
/// <summary> /// 重写Render方法 /// </summary> /// <param name="writer"></param> protected override void Render(HtmlTextWriter writer) { if (!string.IsNullOrEmpty(Request["Createhtml"]) && Request["Createhtml"] == "1") { StringWriter strWriter = new StringWriter(); HtmlTextWriter tempWriter = new HtmlTextWriter(strWriter); try { base.Render(tempWriter); } catch (Exception ex) { We7.Framework.LogHelper.WriteLog(typeof(Go), ex); strWriter.Write(""); }; //读取原始模板内容 HtmlDocument doc = new HtmlDocument(); doc.OptionAutoCloseOnEnd = true; doc.OptionCheckSyntax = true; doc.OptionOutputOriginalCase = true; try { doc.Load(Server.MapPath(TemplatePath), Encoding.UTF8); } catch (Exception ex) { We7.Framework.LogHelper.WriteLog(typeof(Go), ex); throw new Exception("格式化HTML错误"); } string strContent = doc.DocumentNode.InnerText; //提取控件注册信息 string pat = @"<%@[^>]*>"; Regex reg = new Regex(pat); MatchCollection m = reg.Matches(strContent); StringBuilder sb = new StringBuilder(); for (int i = 0; i < m.Count; i++) { string temp = m[i].Value; if (!m[i].ToString().Contains("Src=\"/")) { temp = m[i].Value.Replace("Src=\"", "Src=\"" + TemplatePath.Remove(TemplatePath.LastIndexOf("/")) + "/"); } sb.Append(temp + "\r\n"); } //给生成后模板添加控件注册信息 string content = strWriter.ToString(); string pat1 = @"<html[^>]*>"; string RegAndHtml = sb.ToString() + "\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">"; content = Regex.Replace(content, pat1, RegAndHtml, RegexOptions.IgnoreCase); content = content.Replace("<head>", "<head runat=\"server\">"); writer.Write(content); string channelUrl = ChannelHelper.GetChannelUrlFromUrl(Context.Request.RawUrl, Context.Request.ApplicationPath); string fileName = ""; if (string.IsNullOrEmpty(ColumnMode)) { fileName = "index.ascx"; } else { fileName = ColumnMode + ".ascx"; } string resultPath = Server.MapPath(TemplatePath.Remove(TemplatePath.LastIndexOf("/")) + "/HtmlTemplate/" + channelUrl + fileName); FileHelper.WriteFile(resultPath, content); } else { StringWriter strWriter = new StringWriter(); HtmlTextWriter tempWriter = new HtmlTextWriter(strWriter); try { base.Render(tempWriter); } catch (Exception ex) { We7.Framework.LogHelper.WriteLog(typeof(Go), ex); strWriter.Write(""); }; string content = strWriter.ToString(); writer.Write(content); } }