Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
            }
        }