using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.IO;
using System.Collections;
using System.Text.RegularExpressions;
using System.Text;

namespace UUN
{
    /// <summary>
    /// 模板的编译器
    /// </summary>
    public class 编译器
    {
        public SqlConnection 连接;
        public HttpContext HC;
        public String 引用 = @"using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.IO;
using UUN;
using System.Collections;
using System.Text;
";

        public bool 是否WML网页;
        public String 方法库 = "";
        public String 开始执行代码;
        public String 文件名称;
        public String 模板名称;
        public String 查询字段 = "";
        private String 代码段_访问统计 = "\t\t设置 访问统计=new 设置(File.ReadAllText(Server.MapPath(\"~/Data/TongJi/ZongTi.xml\"), Encoding.UTF8));\r\n";

        private bool 是否包含模板变量 = false;
        private bool 是否包含统计变量 = false;

        public void 增加引用(String 引用类型)
        {
            if (引用.IndexOf(引用类型) == -1)
                引用 += "using " + 引用类型 + ";";
        }

        private 编译扩展接口 编译扩展;

        private 编译扩展接口 获取编译扩展对象(SqlConnection 连接, HttpContext HC, String 编译类型)
        {
            switch (编译类型)
            {
                case "动态文件_栏目列表":
                    return new 编译扩展_动态文件_栏目列表(连接, HC, this);
                case "动态文件_文章列表":
                    return new 编译扩展_动态文件_文章列表(连接, HC, this);
                case "动态文件_图片列表":
                    return new 编译扩展_动态文件_图片列表(连接, HC, this);
                case "动态文件_软件列表":
                    return new 编译扩展_动态文件_软件列表(连接, HC, this);
                case "动态文件_音乐列表":
                    return new 编译扩展_动态文件_音乐列表(连接, HC, this);
                case "动态文件_视频列表":
                    return new 编译扩展_动态文件_视频列表(连接, HC, this);
                case "动态文件_歌手列表":
                    return new 编译扩展_动态文件_歌手列表(连接, HC, this);
                case "动态文件_专辑列表":
                    return new 编译扩展_动态文件_专辑列表(连接, HC, this);
                case "动态文件_评论列表":
                    return new 编译扩展_动态文件_评论列表(连接, HC, this);
                case "动态文件_用户活动信息列表":
                    return new 编译扩展_动态文件_用户活动信息列表(连接, HC, this);
                case "动态文件_会员列表":
                    return new 编译扩展_动态文件_会员列表(连接, HC, this);
                case "动态文件_版块列表":
                    return new 编译扩展_动态文件_版块列表(连接, HC, this);
                case "动态文件_贴子列表":
                    return new 编译扩展_动态文件_贴子列表(连接, HC, this);
                case "动态文件_回贴列表":
                    return new 编译扩展_动态文件_回贴列表(连接, HC, this);
                case "动态文件_留言本列表":
                    return new 编译扩展_动态文件_留言本列表(连接, HC, this);
                case "动态文件_留言列表":
                    return new 编译扩展_动态文件_留言列表(连接, HC, this);
                case "内容模板/内容列表/文章":
                    return new 编译扩展_内容模板_内容列表_文章(连接, HC, this);
                case "内容模板/内容列表/图片":
                    return new 编译扩展_内容模板_内容列表_图片(连接, HC, this);
                case "内容模板/内容列表/软件":
                    return new 编译扩展_内容模板_内容列表_软件(连接, HC, this);
                case "内容模板/内容列表/音乐":
                    return new 编译扩展_内容模板_内容列表_音乐(连接, HC, this);
                case "内容模板/内容列表/视频":
                    return new 编译扩展_内容模板_内容列表_视频(连接, HC, this);
                case "内容模板/查看内容/文章":
                    return new 编译扩展_查看内容_文章(连接, HC, this);
                case "内容模板/查看内容/图片":
                    return new 编译扩展_查看内容_图片(连接, HC, this);
                case "内容模板/查看内容/软件":
                    return new 编译扩展_查看内容_软件(连接, HC, this);
                case "内容模板/查看内容/音乐":
                    return new 编译扩展_查看内容_音乐(连接, HC, this);
                case "内容模板/查看内容/视频":
                    return new 编译扩展_查看内容_视频(连接, HC, this);
                case "内容模板/评论列表/文章":
                    return new 编译扩展_评论列表(连接, HC, this, "文章");
                case "内容模板/评论列表/图片":
                    return new 编译扩展_评论列表(连接, HC, this, "图片");
                case "内容模板/评论列表/软件":
                    return new 编译扩展_评论列表(连接, HC, this, "软件");
                case "内容模板/评论列表/音乐":
                    return new 编译扩展_评论列表(连接, HC, this, "音乐");
                case "内容模板/评论列表/视频":
                    return new 编译扩展_评论列表(连接, HC, this, "视频");
                case "社区模板/贴子列表":
                    return new 编译扩展_社区模板_贴子列表(连接, HC, this);
                case "社区模板/贴子内容":
                    return new 编译扩展_社区模板_贴子内容(连接, HC, this);
                case "社区模板/回贴列表":
                    return new 编译扩展_回贴列表(连接, HC, this);
                case "其它模板/留言列表":
                    return new 编译扩展_其它模板_留言列表(连接, HC, this);
                case "其它模板/查看留言":
                    return new 编译扩展_其它模板_查看留言(连接, HC, this);
                case "Comment_Save":
                    return new 编译扩展_Comment_Save(连接, HC, this);
                case "Singer":
                    return new 编译扩展_Singer(连接, HC, this);
                case "Album":
                    return new 编译扩展_Album(连接, HC, this);
                case "Singer_Music":
                    return new 编译扩展_Singer_Music(连接, HC, this);
                case "Singer_Album":
                    return new 编译扩展_Singer_Album(连接, HC, this);
                case "Search_News":
                    return new 编译扩展_Search_News(连接, HC, this);
                case "Search_Images":
                    return new 编译扩展_Search_Images(连接, HC, this);
                case "Search_Soft":
                    return new 编译扩展_Search_Soft(连接, HC, this);
                case "Search_Music":
                    return new 编译扩展_Search_Music(连接, HC, this);
                case "Search_Video":
                    return new 编译扩展_Search_Video(连接, HC, this);
                case "L_Message_Add":
                    return new 编译扩展_L_Message_Add(连接, HC, this);
                case "L_Message_Add_Save":
                    return new 编译扩展_L_Message_Add_Save(连接, HC, this);
                case "Club/Login2":
                    return new 编译扩展_Club_Login2(连接, HC, this);
                case "Club/Reg_hand":
                    return new 编译扩展_Club_Reg_hand(连接, HC, this);
                case "Club/Reg_hand2":
                    return new 编译扩展_Club_Reg_hand2(连接, HC, this);
                case "Club/Reg_sms":
                    return new 编译扩展_Club_Reg_sms(连接, HC, this);
                case "Club/User_ProPassword":
                    return new 编译扩展_Club_User_ProPassword(连接, HC, this);
                case "Club/User_Edit_Head":
                    return new 编译扩展_Club_User_Edit_Head(连接, HC, this);
                case "Club/UserHead":
                    return new 编译扩展_Club_UserHead(连接, HC, this);
                case "Club/UserHead2":
                    return new 编译扩展_Club_UserHead2(连接, HC, this);
                case "Club/User_Edit_Head2":
                    return new 编译扩展_Club_User_Edit_Head2(连接, HC, this);
                case "Club/User_Edit_Sign":
                    return new 编译扩展_Club_User_Edit_Sign(连接, HC, this);
                case "Club/User_Edit_Sign2":
                    return new 编译扩展_Club_User_Edit_Sign2(连接, HC, this);
                case "Club/User_Edit_Data":
                    return new 编译扩展_Club_User_Edit_Data(连接, HC, this);
                case "Club/User_Edit_Data2":
                    return new 编译扩展_Club_User_Edit_Data2(连接, HC, this);
                case "Club/User":
                    return new 编译扩展_Club_User(连接, HC, this);
                case "Club/User_Set":
                    return new 编译扩展_Club_User_Set(连接, HC, this);
                case "Club/User_Set2":
                    return new 编译扩展_Club_User_Set2(连接, HC, this);
                case "Club/User_Online":
                    return new 编译扩展_Club_User_Online(连接, HC, this);
                case "Club/GetPassword2":
                    return new 编译扩展_Club_GetPassword2(连接, HC, this);
                case "Club/GetPassword3":
                    return new 编译扩展_Club_GetPassword3(连接, HC, this);
                case "Club/Friends":
                    return new 编译扩展_Club_Friends(连接, HC, this);
                case "Club/Friends_Add2":
                    return new 编译扩展_Club_Friends_Add2(连接, HC, this);
                case "Club/Friends_Search2":
                    return new 编译扩展_Club_Friends_Search2(连接, HC, this);
                case "Club/Friends_Manage":
                    return new 编译扩展_Club_Friends_Manage(连接, HC, this);
                case "Club/Friends_Edit":
                    return new 编译扩展_Club_Friends_Edit(连接, HC, this);
                case "Club/Friends_Edit2":
                    return new 编译扩展_Club_Friends_Edit2(连接, HC, this);
                case "Club/Friends_Delete":
                    return new 编译扩展_Club_Friends_Delete(连接, HC, this);
                case "Club/Friends_Delete2":
                    return new 编译扩展_Club_Friends_Delete2(连接, HC, this);
                case "Club/BlackFriends":
                    return new 编译扩展_Club_BlackFriends(连接, HC, this);
                case "Club/BlackFriends_Add2":
                    return new 编译扩展_Club_BlackFriends_Add2(连接, HC, this);
                case "Club/BlackFriends_Delete":
                    return new 编译扩展_Club_BlackFriends_Delete(连接, HC, this);
                case "Club/Message":
                    return new 编译扩展_Club_Message(连接, HC, this);
                case "Club/MessageContent":
                    return new 编译扩展_Club_MessageContent(连接, HC, this);
                case "Club/Message_Send2":
                    return new 编译扩展_Club_Message_Send2(连接, HC, this);
                case "Club/Message_Delete2":
                    return new 编译扩展_Club_Message_Delete2(连接, HC, this);
                case "Club/Collection":
                    return new 编译扩展_Club_Collection(连接, HC, this);
                case "Club/Collection_Add":
                    return new 编译扩展_Club_Collection_Add(连接, HC, this);
                case "Club/Collection_Add2":
                    return new 编译扩展_Club_Collection_Add2(连接, HC, this);
                case "Club/Collection_Edit":
                    return new 编译扩展_Club_Collection_Edit(连接, HC, this);
                case "Club/Collection_Edit2":
                    return new 编译扩展_Club_Collection_Edit2(连接, HC, this);
                case "Club/Collection_Delete":
                    return new 编译扩展_Club_Collection_Delete(连接, HC, this);
                case "Club/Collection_Delete2":
                    return new 编译扩展_Club_Collection_Delete2(连接, HC, this);
                case "Club/User_Topic":
                    return new 编译扩展_Club_User_Topic(连接, HC, this);
                case "Club/User_Reply":
                    return new 编译扩展_Club_User_Reply(连接, HC, this);
                case "Club/User_Comment":
                    return new 编译扩展_Club_User_Comment(连接, HC, this);
                case "Club/Topic_Add":
                    return new 编译扩展_Club_Topic_Add(连接, HC, this);
                case "Club/Topic_Add2":
                    return new 编译扩展_Club_Topic_Add2(连接, HC, this);
                case "Club/Topic_Add_File":
                    return new 编译扩展_Club_Topic_Add_File(连接, HC, this);
                case "Club/Topic_Add_File2":
                    return new 编译扩展_Club_Topic_Add_File2(连接, HC, this);
                case "Club/Topic_Edit":
                    return new 编译扩展_Club_Topic_Edit(连接, HC, this);
                case "Club/Topic_Edit2":
                    return new 编译扩展_Club_Topic_Edit2(连接, HC, this);
                case "Club/Topic_Append":
                    return new 编译扩展_Club_Topic_Append(连接, HC, this);
                case "Club/Topic_Append2":
                    return new 编译扩展_Club_Topic_Append2(连接, HC, this);
                case "Club/Topic_Delete":
                    return new 编译扩展_Club_Topic_Delete(连接, HC, this);
                case "Club/Topic_Delete2":
                    return new 编译扩展_Club_Topic_Delete2(连接, HC, this);
                case "Club/Topic_State":
                    return new 编译扩展_Club_Topic_State(连接, HC, this);
                case "Club/Topic_Search":
                    return new 编译扩展_Club_Topic_Search(连接, HC, this);
                case "Club/Topic_Function":
                    return new 编译扩展_Club_Topic_Function(连接, HC, this);
                case "Club/Board_Adm":
                    return new 编译扩展_Club_Board_Adm(连接, HC, this);
                case "Club/Board_Black":
                    return new 编译扩展_Club_Board_Black(连接, HC, this);
                case "Club/Board_Black_Add":
                    return new 编译扩展_Club_Board_Black_Add(连接, HC, this);
                case "Club/Board_Black_Add2":
                    return new 编译扩展_Club_Board_Black_Add2(连接, HC, this);
                case "Club/Board_Black_Delete":
                    return new 编译扩展_Club_Board_Black_Delete(连接, HC, this);
                case "Club/Reply_Save":
                    return new 编译扩展_Club_Reply_Save(连接, HC, this);
                default:
                    return new 编译扩展_空();
            }
        }

        public 编译器(HttpContext HC,SqlConnection 连接,String 编译类型,bool 是否WML网页)
        {
            this.连接 = 连接;
            this.HC = HC;
            this.是否WML网页 = 是否WML网页;
            编译扩展 = 获取编译扩展对象(连接, HC, 编译类型);
            this.开始执行代码 = @"		访问 = new 访问(this.Context);
		访问.是否前台=true;
		访问.是否WML="+是否WML网页.ToString().ToLower()+@";
		访问.开始处理(""$所在位置$"",""$内容类型$"",""$内容小类型$"",new 访问.回调委托(ZhiXing));
		访问.关闭连接();
";
        }
        /// <summary>
        /// 将指定的代码编译
        /// </summary>
        /// <param name="_代码">模板代码内容</param>
        /// <param name="文件位置">源码文件的所在位置</param>
        /// <param name="ASPX代码">ASPX文件的代码</param>
        /// <returns></returns>
        public String 编译(String _代码, String 文件位置, out String ASPX代码)
        {
            _代码 = _代码.Replace("~/", 程序.安装位置);
            ASPX代码 = @"<%@ Page Language=""C#"" AutoEventWireup=""true"" CodeFile=""";
            ASPX代码 += 文件位置.Substring(文件位置.LastIndexOf('/') + 1);
            ASPX代码 += ".aspx.cs\" Inherits=\"" + "w"+文件位置.Replace("/", "_").Replace(" ","_") + "\" %>";

            String 编译结果 = 编译扩展.开始执行代码();
            编译结果 += 编译(_代码);
            编译结果 += 编译扩展.结束执行代码();
            String 返回值 = "public partial class " + "w" + 文件位置.Replace("/", "_").Replace(" ", "_") + ":System.Web.UI.Page\r\n";
            返回值 += "{\r\n";
            返回值 += "\t//------------------------------\r\n";
            返回值 += "\t// 此文件代码由工具自动生成\r\n";
            返回值 += "\t// " + DateTime.Now + "\r\n";
            返回值 += "\t// UUNSOFT.COM 版权所有\r\n";
            返回值 += "\t//------------------------------\r\n";
            返回值 += "\tprivate 访问 访问;\r\n";
            返回值 += "\tprivate StringBuilder 返回值;\r\n";
            返回值 += "\tprotected void Page_Load(object sender,EventArgs e)\r\n";
            返回值 += "\t{\r\n";
            返回值 += 开始执行代码;
            返回值 += "\t}\r\n";

            返回值 += "\tprivate void ZhiXing()\r\n";
            返回值 += "\t{\r\n";
            返回值 += "\t\t返回值=new StringBuilder();\r\n";
            返回值 += 编译结果;
            返回值 += "\t\tResponse.Write(返回值);\r\n";
            返回值 += "\t\tResponse.Write(\"<!-- Powered by www.uunsoft.com -->\");\r\n";
            返回值 += "\t}\r\n";

            返回值 += 方法库;
            返回值 += "}";
            返回值 = 引用 + "\r\n" + 返回值;
            return 返回值;
        }
        private String 编译(String _代码)
        {
            String 返回值 = "";

            bool 文本_代码 = true;
            String 文本 = "";
            String 代码 = "";

            Char 上个字符 = '\0';
            Char[] 字符 = new char[1];
            int 读取数;
            StringReader 读取=new StringReader(_代码);
            while ((读取数 = 读取.Read(字符, 0, 1)) > 0)
            {
                if (文本_代码 && 字符[0] == '$' && 上个字符 == '{')
                {
                    文本 = 文本.Substring(0, 文本.Length - 1);
                    if(文本!="")
                        返回值 += "\t\t返回值.Append(@\"" + 文本.Replace("\"", "\"\"") + "\");\r\n";
                    文本_代码 = false;
                    文本 = "";
                    上个字符 = 字符[0];
                    continue;
                }
                if ((!文本_代码) && 字符[0] == '}' && 上个字符 == '$')
                {
                    代码 = 代码.Substring(0, 代码.Length - 1);
                    返回值 += 编译代码段(代码);
                    文本_代码 = true;
                    代码 = "";
                    上个字符 = 字符[0];
                    continue;
                }
                if (文本_代码)
                    文本 += 字符[0].ToString();
                else
                    代码 += 字符[0].ToString();
                上个字符 = 字符[0];
            }
            返回值 += "\t\t返回值.Append(@\"" + 文本.Replace("\"", "\"\"") + "\");\r\n";
            读取.Close();

            return 返回值;
        }
        private String 增加代码段_访问统计()
        {
            if (!是否包含统计变量)
            {
                String 返回值;
                返回值 = 代码段_访问统计;
                是否包含统计变量 = true;
                return 返回值;
            }
            else
                return "";
        }
        private String 编译公共标签(String 代码)
        {
            String 返回值 = "";
            switch (代码)
            {
                case "网站名称":
                    返回值 = "\t\t返回值.Append(Server.HtmlEncode(程序.设置[\"网站名称\"].ToString()));\r\n";
                    break;
                case "网站域名":
                    返回值 = "\t\t返回值.Append(Server.HtmlEncode(程序.设置[\"网站域名\"].ToString()));\r\n";
                    break;
                case "网站LOGO":
                    返回值 = "\t\t返回值.Append(Server.HtmlEncode(程序.设置[\"网站LOGO\"].ToString()));\r\n";
                    break;
                case "标识名称":
                    返回值 = "\t\t返回值.Append(Server.HtmlEncode(程序.设置[\"标识名称\"].ToString()));\r\n";
                    break;
                case "会员在线数":
                    返回值 = "\t\t返回值.Append(Application[\"UUN_UUN3G_ZaiXianHuiYuanShu\"]);\r\n";
                    break;
                case "当前在线数":
                    返回值 = "\t\t返回值.Append(Application[\"UUN_UUN3G_ZaiXianYongHuShu\"]);\r\n";
                    break;
                case "总点击数":
                    返回值+=增加代码段_访问统计();
                    返回值 += "\t\t返回值.Append(访问统计[\"总点击数\"]);\r\n";
                    break;
                case "周点击数":
                    返回值+=增加代码段_访问统计();
                    返回值 += "\t\t返回值.Append(访问统计[\"周点击数\"]);\r\n";
                    break;
                case "今点击数":
                    返回值+=增加代码段_访问统计();
                    返回值 += "\t\t返回值.Append(访问统计[\"今点击数\"]);\r\n";
                    break;
                case "总IP数":
                    返回值+=增加代码段_访问统计();
                    返回值 += "\t\t返回值.Append(访问统计[\"总IP数\"]);\r\n";
                    break;
                case "周IP数":
                    返回值 += 增加代码段_访问统计();
                    返回值 += "\t\t返回值.Append(访问统计[\"周IP数\"]);\r\n";
                    break;
                case "今IP数":
                    返回值 += 增加代码段_访问统计();
                    返回值 += "\t\t返回值.Append(访问统计[\"今IP数\"]);\r\n";
                    break;
                case "开始统计时间":
                    返回值 += 增加代码段_访问统计();
                    返回值 += "\t\t返回值.Append(访问统计[\"开始统计时间\"]);\r\n";
                    break;
                case "统计天数":
                    返回值 += 增加代码段_访问统计();
                    返回值 += "\t\t返回值.Append(访问统计[\"统计天数\"]);\r\n";
                    break;
                case "当前地址":
                    返回值 += "\t\t返回值.Append(Server.UrlEncode(Request.Url.ToString()));\r\n";
                    break;
                case "男性名词":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(程序.设置[\"单位名词_男性名词\"].ToString()));\r\n";
                    break;
                case "女性名词":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(程序.设置[\"单位名词_女性名词\"].ToString()));\r\n";
                    break;
                case "积分名词":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(程序.设置[\"单位名词_积分名词\"].ToString()));\r\n";
                    break;
                case "积分单位":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(程序.设置[\"单位名词_积分单位\"].ToString()));\r\n";
                    break;
                case "当前时间":
                    返回值+="\t\t返回值.Append(DateTime.Now.ToString());\r\n";
                    break;
                case "当前日期":
                    返回值 += "\t\t返回值.Append(DateTime.Now.ToString(\"yyyy-MM-dd\"));\r\n";
                    break;
                case "今日时间":
                    返回值 += "\t\t返回值.Append(DateTime.Now.ToString(\"HH:mm:ss\"));\r\n";
                    break;
                case "用户昵称":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(访问.用户[\"昵称\"].ToString()));\r\n";
                    break;
                case "用户ID":
                    返回值 += "\t\t返回值.Append(访问.用户[\"ID\"].ToString());\r\n";
                    break;
                case "用户标识":
                    返回值 += "\t\t返回值.Append(访问.用户[\"标识\"].ToString());\r\n";
                    break;
                case "用户IP":
                    返回值 += "\t\t返回值.Append(Request.UserHostAddress);\r\n";
                    break;
                case "弹出消息":
                    返回值 += "\t\t返回值.Append(new 消息(this.Context,访问.连接).弹出消息(访问.用户));\r\n";
                    break;
                case "个人中心地址":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\""+(是否WML网页?"":"3G_")+"Club/User_Default.aspx\",访问.用户[\"标识\"].ToString())));\r\n";
                    break;
                case "在线会员地址":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\""+(是否WML网页?"":"3G_")+"Club/User_Online.aspx?rurl=\"+Server.UrlEncode(Request.Url.ToString()),访问.用户[\"标识\"].ToString())));\r\n";
                    break;
                case "会员登录地址":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\""+(是否WML网页?"":"3G_")+"Club/Login.aspx?rurl=\"+Server.UrlEncode(Request.Url.ToString().Replace(访问.用户[\"标识\"].ToString(),\"@sid@\")),访问.用户[\"标识\"].ToString())));\r\n";
                    break;
                case "会员注册地址":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "Club/Reg.aspx?rurl=\"+Server.UrlEncode(Request.Url.ToString().Replace(访问.用户[\"标识\"].ToString(),\"@sid@\")),访问.用户[\"标识\"].ToString())));\r\n";
                    break;
                case "WEB":
                    返回值 += 编译WEB();
                    break;
                case "/WEB":
                    返回值 += 编译_WEB();
                    break;
                case "WAP":
                    返回值 += 编译WAP();
                    break;
                case "/WAP":
                    返回值 += 编译_WAP();
                    break;
                case "会员":
                    返回值 += 编译会员();
                    break;
                case "/会员":
                    返回值 += 编译_会员();
                    break;
                case "游客":
                    返回值 += 编译游客();
                    break;
                case "/游客":
                    返回值 += 编译_游客();
                    break;
                case "执行时间":
                    返回值 += "\t\t返回值.Append((DateTime.Now-访问.请求时间).TotalSeconds);\r\n";
                    break;
                case "首页地址":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"page.aspx?ID=" +
                        (this.是否WML网页 ? 1 : 2) + "\",访问.用户[\"标识\"].ToString())));\r\n";
                    break;
                case "社区首页地址":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"club/page.aspx?ID=" +
                        (this.是否WML网页 ? 1 : 2) + "\",访问.用户[\"标识\"].ToString())));\r\n";
                    break;
                default:
                    返回值 += 编译扩展.编译公共标签(代码);
                    break;
            }
            return 返回值;
        }
        private String 编译模板标签(String 代码内容)
        {
            if (代码内容.IndexOf("(") == -1)
                return 编译公共标签(代码内容);
            else
            {
                Regex 表达式 = new Regex("^(.+?)\\((.+)\\)$", RegexOptions.Singleline);
                Match 结果 = 表达式.Match(代码内容);
                if (结果.Success)
                    return 编译模板方法(结果.Groups[1].Value, 结果.Groups[2].Value.Split(new char[] { ',' }));
                else
                    return "";
            }
        }
        private String 编译模板方法(String 方法名称, String[] 属性数组)
        {
            switch (方法名称)
            {
                case "会员列表":
                    return 编译会员列表(Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]),
                        属性数组[2],
                        属性数组[3],
                        属性数组[4],
                        Convert.ToInt32(属性数组[5]),
                        Convert.ToInt32(属性数组[6]),
                        属性数组[7],
                        属性数组[8]);
                case "用户活动信息":
                    return 编译用户活动信息(Convert.ToInt32(属性数组[0]),
                        属性数组[1],
                        属性数组[2],
                        属性数组[3]);
                case "HTML编码":
                    return 编译HTML编码(属性数组[0]);
                case "URL编码":
                    return 编译URL编码(属性数组[0]);
                case "随机代码":
                    return 编译随机代码(属性数组[0]);
                case "随机UBB":
                    return 编译随机UBB(属性数组[0]);
                case "栏目列表":
                    return 编译栏目列表(属性数组[0],
                        属性数组[1],
                        Convert.ToInt32(属性数组[2]),
                        属性数组[3],
                        属性数组[4],
                        属性数组[5],
                        Convert.ToInt32(属性数组[6]));
                case "文章列表":
                    return 编译文章列表(属性数组[0],false,
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]),
                        Convert.ToInt32(属性数组[4]),
                        属性数组[5],
                        属性数组[6],
                        Convert.ToInt32(属性数组[7]),
                        属性数组[8],
                        属性数组[9]);
                case "图片列表":
                    return 编译图片列表(属性数组[0], false,
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]),
                        Convert.ToInt32(属性数组[4]),
                        属性数组[5],
                        属性数组[6],
                        Convert.ToInt32(属性数组[7]),
                        属性数组[8],
                        属性数组[9]);
                case "软件列表":
                    return 编译软件列表(属性数组[0], false,
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]),
                        Convert.ToInt32(属性数组[4]),
                        属性数组[5],
                        属性数组[6],
                        Convert.ToInt32(属性数组[7]),
                        属性数组[8],
                        属性数组[9]);
                case "音乐列表":
                    return 编译音乐列表(属性数组[0], false,
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]),
                        Convert.ToInt32(属性数组[4]),
                        属性数组[5],
                        属性数组[6],
                        Convert.ToInt32(属性数组[7]),
                        属性数组[8],
                        属性数组[9]);
                case "视频列表":
                    return 编译视频列表(属性数组[0], false,
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]),
                        Convert.ToInt32(属性数组[4]),
                        属性数组[5],
                        属性数组[6],
                        属性数组[7],
                        Convert.ToInt32(属性数组[8]),
                        属性数组[9],
                        属性数组[10]);
                case "歌手列表":
                    return 编译歌手列表(Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]),
                        属性数组[3],
                        属性数组[4],
                        属性数组[5],
                        属性数组[6]);
                case "专辑列表":
                    return 编译专辑列表(Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]),
                        属性数组[3],
                        属性数组[4],
                        属性数组[5],
                        属性数组[6]);
                case "文章搜索":
                    return 编译文章搜索(属性数组[0],
                        属性数组[1]);
                case "图片搜索":
                    return 编译图片搜索(属性数组[0],
                        属性数组[1]);
                case "软件搜索":
                    return 编译软件搜索(属性数组[0],
                        属性数组[1]);
                case "音乐搜索":
                    return 编译音乐搜索(属性数组[0],
                        属性数组[1]);
                case "歌手搜索":
                    return 编译歌手搜索(属性数组[0],
                        属性数组[1]);
                case "专辑搜索":
                    return 编译专辑搜索(属性数组[0],
                        属性数组[1]);
                case "评论列表":
                    return 编译评论列表(属性数组[0],
                        属性数组[1],
                        属性数组[2],
                        属性数组[3],
                        Convert.ToInt32(属性数组[4]),
                        Convert.ToInt32(属性数组[5]),
                        Convert.ToInt32(属性数组[6]),
                        属性数组[7],
                        属性数组[8],
                        Convert.ToInt32(属性数组[9]),
                        属性数组[10],
                        属性数组[11]);
                case "版块列表":
                    return 编译版块列表(属性数组[0],
                        Convert.ToInt32(属性数组[1]),
                        属性数组[2],
                        属性数组[3],
                        属性数组[4],
                        Convert.ToInt32(属性数组[5]),
                        属性数组[6]);
                case "贴子列表":
                    return 编译贴子列表(属性数组[0],
                        属性数组[1],
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]),
                        Convert.ToInt32(属性数组[4]),
                        属性数组[5],
                        属性数组[6],
                        Convert.ToInt32(属性数组[7]),
                        属性数组[8],
                        属性数组[9]);
                case "回贴列表":
                    return 编译回贴列表(属性数组[0],
                        属性数组[1],
                        属性数组[2],
                        Convert.ToInt32(属性数组[3]),
                        Convert.ToInt32(属性数组[4]),
                        Convert.ToInt32(属性数组[5]),
                        属性数组[6],
                        属性数组[7],
                        Convert.ToInt32(属性数组[8]),
                        属性数组[9],
                        属性数组[10]);
                case "随机广告":
                    return 编译随机广告(Convert.ToInt32(属性数组[0]));
                case "留言本列表":
                    return 编译留言本列表(Convert.ToInt32(属性数组[0]),
                        属性数组[1],
                        属性数组[2],
                        属性数组[3],
                        Convert.ToInt32(属性数组[4]),
                        属性数组[5]);
                case "留言列表":
                    return 编译留言列表(属性数组[0],
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]),
                        Convert.ToInt32(属性数组[4]),
                        属性数组[5],
                        属性数组[6],
                        属性数组[7],
                        属性数组[8],
                        Convert.ToInt32(属性数组[9]),
                        属性数组[10],
                        属性数组[11]);
                case "栏目地址":
                    return 编译栏目地址(Convert.ToInt32(属性数组[0]));
                case "内容地址":
                    return 编译内容地址(
                        Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]));
                case "文章搜索地址":
                    return 编译文章搜索地址(属性数组[0],
                        (属性数组[1]));
                case "图片搜索地址":
                    return 编译图片搜索地址(属性数组[0],
                        (属性数组[1]));
                case "软件搜索地址":
                    return 编译软件搜索地址(属性数组[0],
                        (属性数组[1]));
                case "音乐搜索地址":
                    return 编译音乐搜索地址(属性数组[0],
                        (属性数组[1]));
                case "视频搜索地址":
                    return 编译视频搜索地址(属性数组[0],
                        (属性数组[1]));
                case "评论地址":
                    return 编译评论地址(
                        Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]));
                    break;
                case "版块地址":
                    return 编译版块地址(Convert.ToInt32(属性数组[0]));
                    break;
                case "贴子地址":
                    return 编译贴子地址(
                        Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]));
                    break;
                case "回贴地址":
                    return 编译回贴地址(
                        Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]));
                    break;
                case "留言本地址":
                    return 编译留言本地址(Convert.ToInt32(属性数组[0]));
                    break;
                case "留言地址":
                    return 编译留言地址(
                        Convert.ToInt32(属性数组[0]),
                        Convert.ToInt32(属性数组[1]));
                case "动态栏目列表地址":
                    return 编译动态栏目列表地址(属性数组[0],
                        属性数组[1],
                        属性数组[2],
                        Convert.ToInt32(属性数组[3]));
                case "动态文章列表地址":
                    return 编译动态文章列表地址(属性数组[0],
                        属性数组[1],
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]));
                case "动态图片列表地址":
                    return 编译动态图片列表地址(属性数组[0],
                        属性数组[1],
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]));
                case "动态软件列表地址":
                    return 编译动态软件列表地址(属性数组[0],
                        属性数组[1],
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]));
                case "动态音乐列表地址":
                    return 编译动态音乐列表地址(属性数组[0],
                        属性数组[1],
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]));
                case "动态视频列表地址":
                    return 编译动态视频列表地址(属性数组[0],
                        属性数组[1],
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]));
                case "动态歌手列表地址":
                    return 编译动态歌手列表地址(属性数组[0],
                        Convert.ToInt32(属性数组[1]));
                case "动态专辑列表地址":
                    return 编译动态专辑列表地址(属性数组[0],
                        Convert.ToInt32(属性数组[1]));
                case "动态评论列表地址":
                    return 编译动态评论列表地址(属性数组[0],
                        属性数组[1],
                        属性数组[2],
                        属性数组[3],
                        属性数组[4],
                        Convert.ToInt32(属性数组[5]));
                case "动态用户活动信息列表地址":
                    return 编译动态用户活动信息列表地址(属性数组[0]);
                case "动态会员列表地址":
                    return 编译动态会员列表地址(属性数组[0],
                        属性数组[1],
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]));
                case "动态版块列表地址":
                    return 编译动态版块列表地址(属性数组[0],
                        Convert.ToInt32(属性数组[1]),
                        Convert.ToInt32(属性数组[2]));
                case "动态贴子列表地址":
                    return 编译动态贴子列表地址(属性数组[0],
                        属性数组[1],
                        属性数组[2],
                        Convert.ToInt32(属性数组[3]));
                case "动态回贴列表地址":
                    return 编译动态回贴列表地址(属性数组[0],
                        属性数组[1],
                        属性数组[2],
                        属性数组[3],
                        Convert.ToInt32(属性数组[4]));
                case "动态留言本列表地址":
                    return 编译动态留言本列表地址(属性数组[0],
                        Convert.ToInt32(属性数组[1]));
                case "动态留言列表地址":
                    return 编译动态留言列表地址(属性数组[0],
                        属性数组[1],
                        Convert.ToInt32(属性数组[2]),
                        Convert.ToInt32(属性数组[3]),
                        Convert.ToInt32(属性数组[4]));
                case "时间":
                    return 编译时间(Convert.ToString(属性数组[0]));
                default:
                    return 编译扩展.编译模板方法(方法名称.Trim(), 属性数组);
            }
        }
        private String 编译WEB()
        {
            return @"		if(常用.是否电脑用户(Request.UserHostAddress,Request.Browser.Browser))
		{
";
        }
        private String 编译_WEB()
        {
            return @"		}
";
        }
        private String 编译WAP()
        {
            return @"		if(!常用.是否电脑用户(Request.UserHostAddress,Request.Browser.Browser))
		{
";
        }
        private String 编译_WAP()
        {
            return @"		}
";
        }
        private String 编译会员()
        {
            return @"		if(访问.用户[""用户类型""].ToString()==""会员"")
		{
";
        }
        private String 编译_会员()
        {
            return @"
		}
";
        }
        private String 编译游客()
        {
            return @"		if(访问.用户[""用户类型""].ToString()!=""会员"")
		{
";
        }
        private String 编译_游客()
        {
            return @"		}
";
        }
        private String 编译时间(String 时间格式)
        {
            return "\t\t返回值.Append(DateTime.Now.ToString(@\"" + 时间格式.Replace("\"", "\"\"") + "\"));\r\n";
        }
        private String 编译动态栏目列表地址(String 文件名,String 类型, String 所属栏目, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?type=" +
                HC.Server.UrlEncode(类型) +
                "&ID=" + HC.Server.UrlEncode(所属栏目) +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态文章列表地址(String 文件名, String 所属栏目, int 是否推荐, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?ID=" + HC.Server.UrlEncode(所属栏目) +
                "&rec=" + 是否推荐 +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态图片列表地址(String 文件名, String 所属栏目, int 是否推荐, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?ID=" + HC.Server.UrlEncode(所属栏目) +
                "&rec=" + 是否推荐 +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态软件列表地址(String 文件名, String 所属栏目, int 是否推荐, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?ID=" + HC.Server.UrlEncode(所属栏目) +
                "&rec=" + 是否推荐 +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态音乐列表地址(String 文件名, String 所属栏目, int 是否推荐, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?ID=" + HC.Server.UrlEncode(所属栏目) +
                "&rec=" + 是否推荐 +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态视频列表地址(String 文件名, String 所属栏目, int 是否推荐, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?ID=" + HC.Server.UrlEncode(所属栏目) +
                "&rec=" + 是否推荐 +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态歌手列表地址(String 文件名, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?order=" + 排序 +
                "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态专辑列表地址(String 文件名, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?order=" + 排序 +
                "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态评论列表地址(String 文件名, String 内容类型, String 所属栏目, String 所属用户, String 所属内容, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?type=" + HC.Server.UrlEncode(内容类型) +
                "&CID=" + HC.Server.UrlEncode(所属栏目) +
                "&user=" + HC.Server.UrlEncode(所属用户) +
                "&ID=" + HC.Server.UrlEncode(所属内容) +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态用户活动信息列表地址(String 文件名)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态会员列表地址(String 文件名, String 用户组, int 是否在线, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?usergroups=" +
                HC.Server.UrlEncode(用户组) +
                "&online=" + 是否在线 +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态版块列表地址(String 文件名, int 所属版块, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?ID=" + 所属版块 +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态贴子列表地址(String 文件名, String 所属版块, String 状态, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?ID=" +
                HC.Server.UrlEncode(所属版块) +
                "&state=" + HC.Server.UrlEncode(状态) +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态回贴列表地址(String 文件名, String 所属版块, String 所属用户, String 所属贴子, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?board=" +
                HC.Server.UrlEncode(所属版块) +
                "&user=" + HC.Server.UrlEncode(所属用户) +
                "&Topic=" + HC.Server.UrlEncode(所属贴子) +
                "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态留言本列表地址(String 文件名, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?order=" +
                排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译动态留言列表地址(String 文件名, String 所属留言本, int 保密状态, int 回复状态, int 排序)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(@\"" + 文件名.Replace("\"", "\"\"") + "?bid=" + HC.Server.UrlEncode(所属留言本) +
                "&ishidden=" + 保密状态 + "&isreply=" + 回复状态 + "&order=" + 排序 + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译内容地址(int 栏目ID,int ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\""+(是否WML网页?"":"3G_")+"Content.aspx?CID="+栏目ID+"&ID=" + ID + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译文章搜索地址(String 关键字,String 栏目ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "Search_News.aspx?g=" + HttpUtility.UrlEncode(关键字) + "&ID="+HttpUtility.UrlEncode(栏目ID)+"\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译图片搜索地址(String 关键字,String 栏目ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "Search_Images.aspx?g=" + HttpUtility.UrlEncode(关键字) + "&ID="+HttpUtility.UrlEncode(栏目ID)+"\",访问[\"标识\"].ToString())));\r\n";
        }
        private String 编译软件搜索地址(String 关键字,String 栏目ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "Search_Soft.aspx?g=" + HttpUtility.UrlEncode(关键字) + "&ID="+HttpUtility.UrlEncode(栏目ID)+"\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译音乐搜索地址(String 关键字,String 栏目ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "Search_Music.aspx?g=" + HttpUtility.UrlEncode(关键字) + "&ID=" + HttpUtility.UrlEncode(栏目ID) + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译视频搜索地址(String 关键字,String 栏目ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "Search_Video.aspx?g=" + HttpUtility.UrlEncode(关键字) + "&ID=" + HttpUtility.UrlEncode(栏目ID) + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译歌手搜索地址(String 关键字)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "Search_Singer.aspx?g=" + HttpUtility.UrlEncode(关键字) + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译专辑搜索地址(String 关键字)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "Search_Album.aspx?g=" + HttpUtility.UrlEncode(关键字) + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译评论地址(int 栏目ID,int ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "Comment.aspx?CID="+栏目ID+"&ID=" + ID + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译版块地址(int 版块ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/" + (是否WML网页 ? "" : "3G_") + "Board.aspx?ID="+版块ID+"\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译贴子地址(int 版块ID,int ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/" + (是否WML网页 ? "" : "3G_") + "Topic.aspx?BID="+版块ID+"&ID=" + ID + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译回贴地址(int 版块ID,int ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"Club/" + (是否WML网页 ? "" : "3G_") + "Reply.aspx?BID="+版块ID+"&ID=" + ID + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译留言本地址(int ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "GuestBook.aspx?ID="+ID+"\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译留言地址(int 留言本ID,int ID)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "L_Message.aspx?GID="+留言本ID+"&ID=" + ID + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译栏目地址(int ID)
        {
            return "返回值.Append(Server.HtmlEncode(常用.处理地址(程序.安装位置+\"" + (是否WML网页 ? "" : "3G_") + "Column.aspx?ID=" + ID + "\",访问.用户[\"标识\"].ToString())));\r\n";
        }
        private String 编译随机广告(int 分类)
        {
            return "\t\t返回值.Append(常用.获取随机广告(" + 分类 + ",访问.用户[\"标识\"].ToString()));\r\n";
        }
        private String 编译内容搜索(String 按钮文字,String 关键字, String 内容类型, String 内容地址)
        {
            String 随机值 = 常用.随机字符(8);
            方法库 += "\tprivate String "+内容类型+"搜索" + 随机值 + "()\r\n" +
                "\t{\r\n";
            方法库 += "\t\tString 随机关键字=\"\";\r\n";
            方法库 += "\t\tString[] 字符数组=@\"" + 关键字.Replace("\"", "\"\"") + "\".Split(new char[]{'|'}, StringSplitOptions.RemoveEmptyEntries);\r\n";
            方法库 += "\t\tif(字符数组.Length>0)\r\n";
            方法库 += "\t\t\t随机关键字=字符数组[常用.随机数(字符数组.Length)];\r\n";
            方法库 += "\t\tString 返回值=\"\";\r\n";
            方法库 += "\t\tint 随机数=常用.随机数(99999);\r\n";
            if (是否WML网页)
            {
                方法库 += "\t\t返回值+=\"<input type=\\\"text\\\" name=\\\"text\"+随机数+\"\\\" value=\\\"\"+Server.HtmlEncode(随机关键字)+\"\\\" /><br/>\";";
                方法库 += "\t\t返回值+=\"<anchor><go href=\\\"Search_"+内容地址+".aspx\\\" method=\\\"get\\\">";
                方法库 += "<postfield name=\\\"g\\\" value=\\\"$(text\" + 随机数 + \")\\\" />";
                方法库 += "<postfield name=\\\"\"+程序.设置[\"标识名称\"]+\"\\\" value=\\\"\"+访问.用户[\"标识\"].ToString()+\"\\\" />";
                方法库 += "</go>" + HC.Server.HtmlEncode(按钮文字) + "</anchor><br/>\";\r\n";
            }
            else
            {
                方法库 += "\t\t返回值+=\"<form method=\\\"post\\\" action=\\\"3G_Search_" + 内容地址 + ".aspx\\\">";
                方法库 += "<input type=\\\"hidden\\\" name=\\\"\"+程序.设置[\"标识名称\"]+\"\\\" value=\\\"\"+访问.用户[\"标识\"].ToString()+\"\\\" />";
                方法库 += "<input type=\\\"text\\\" name=\\\"text\" + 随机数 + \"\\\" value=\\\"\"+Server.HtmlEncode(随机关键字)+\"\\\" /><br/>";
                方法库 += "<input type=\\\"submit\\\" value=\\\"" + HC.Server.HtmlEncode(按钮文字) + "\\\" />";
                方法库 += "</form>\";\r\n";
            }
            方法库 += "\t\treturn 返回值;\r\n";
            方法库 += "\t}\r\n";
            return "\t\t返回值.Append("+内容类型+"搜索" + 随机值 + "());\r\n";
        }
        private String 编译文章搜索(String 按钮文字,String 关键字)
        {
            return 编译内容搜索(按钮文字, 关键字, "文章", "News");
        }
        private String 编译图片搜索(String 按钮文字,String 关键字)
        {
            return 编译内容搜索(按钮文字,关键字, "图片", "Images");
        }
        private String 编译软件搜索(String 按钮文字,String 关键字)
        {
            return 编译内容搜索(按钮文字, 关键字, "软件", "Soft");
        }
        private String 编译音乐搜索(String 按钮文字,String 关键字)
        {
            return 编译内容搜索(按钮文字,关键字, "音乐", "Music");
        }
        private String 编译视频搜索(String 按钮文字,String 关键字)
        {
            return 编译内容搜索(按钮文字, 关键字, "视频", "Video");
        }
        private String 编译歌手搜索(String 按钮文字,String 关键字)
        {
            return 编译内容搜索(按钮文字, 关键字, "歌手", "Singer");
        }
        private String 编译专辑搜索(String 按钮文字,String 关键字)
        {
            return 编译内容搜索(按钮文字, 关键字, "专辑", "Album");
        }
        private String 编译随机代码(String 代码)
        {
            String 随机值=常用.随机字符(8);
            方法库 += "\tprivate String 随机代码" + 随机值 + "()\r\n" +
                "\t{\r\n";
            方法库 += "\t\tString 字符串=@\"" + 代码.Replace("\"", "\"\"") + "\";\r\n";
            String 返回值 = "";

            方法库 += "\t\tString[] 字符串数组=字符串.Split(new char[]{'|'});\r\n";
            方法库 += "\t\tif(字符串数组.Length<1)\r\n";
            方法库 += "\t\t\treturn \"\";\r\n";
            方法库 += "\t\treturn 字符串数组[常用.随机数(字符串数组.Length)];\r\n";
            方法库 += "\t}\r\n";

            返回值 = "\t\t返回值.Append(随机代码" + 随机值 + "());\r\n";

            return 返回值;
        }
        private String 编译随机UBB(String 代码)
        {
            String 随机值 = 常用.随机字符(8);
            方法库 += "\tprivate String 随机代码" + 随机值 + "()\r\n" +
                "\t{\r\n";
            方法库 += "\t\tString 字符串=@\"" + 代码.Replace("\"", "\"\"") + "\";\r\n";
            String 返回值 = "";

            方法库 += "\t\tString[] 字符串数组=字符串.Split(new char[]{'|'});\r\n";
            方法库 += "\t\tif(字符串数组.Length<1)\r\n";
            方法库 += "\t\t\treturn \"\";\r\n";
            方法库 += "\t\treturn 常用.UBB转换(字符串数组[常用.随机数(字符串数组.Length)],访问.用户);\r\n";
            方法库 += "\t}\r\n";

            返回值 = "\t\t返回值.Append(随机代码" + 随机值 + "());\r\n";

            return 返回值;
        }
        private String 编译用户活动信息(int 数量, String 格式, String 交替格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("会员链接地址", "会员ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("会员链接地址", @"Server.HtmlEncode(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"User.aspx?ID=""+行[""会员ID""]+""&Rurl=""+Server.UrlEncode(Request.Url.ToString()))");
            字段代码.Add("操作时间", @"常用.计算过去时间(Convert.ToDateTime(行[""操作时间""]))+""前""");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 用户活动信息" + 随机值 + "()\r\n" +
                "\t{\r\n";


            方法库 += "\t\tSqlCommand 语句=new SqlCommand(\"SELECT " + 查询字段 + " FROM [\"+程序.数据表前缀+\"社区_会员活动信息] ORDER BY [ID] DESC\",访问.连接);\r\n";

            生成查询结果列表(数量, 行代码, false,空记录代码);
            return "\t\t用户活动信息" + 随机值 + "();\r\n";
        }
        private String 编译留言本列表(int 排序,String 格式,String 行格式,String 分隔代码,int 一行显示数量,String 时间格式)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("留言本地址", "ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("留言本地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"GuestBook.aspx?ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("留言本名称", @"Server.HtmlEncode(行[""留言本名称""].ToString())");
            字段代码.Add("创建时间", @"Convert.ToDateTime(行[""创建时间""]).ToString(""" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, "", 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 留言本列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            方法库 += "\t\tString SQL=\"SELECT " + 查询字段 + " FROM [\"+程序.数据表前缀+\"其它_留言_留言本] ORDER BY ";

            switch (排序)
            {
                case 0:
                    方法库 += "[ID]";
                    break;
                default:
                    方法库 += "[ID] DESC";
                    break;
            }
            方法库 += "\";\r\n";
            方法库 += "\t\tSqlCommand 语句=new SqlCommand(SQL,访问.连接);\r\n";
            生成查询结果列表(一行显示数量,
                行格式,
                行代码,
                分隔代码);
            return "\t\t留言本列表" + 随机值 + "();\r\n";
        }
        private String 编译版块列表(String 所属版块,int 排序,String 格式,String 行格式,String 分隔代码,int 一行显示数量,String 时间格式)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("版块地址", "ID,外部链接地址");
            必须字段.Add("最后发贴作者地址", "最后发贴作者ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("版块地址", @"行[""外部链接地址""].ToString()!=""""?Server.HtmlEncode(常用.处理地址(行[""外部链接地址""].ToString(),访问.用户[""标识""].ToString())):Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"Board.aspx?ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("版块名称", @"Server.HtmlEncode(行[""版块名称""].ToString())");
            字段代码.Add("版块简介", @"Server.HtmlEncode(常用.截取字符串(行[""版块简介""].ToString(),100))");
            字段代码.Add("创建时间", @"Convert.ToDateTime(行[""创建时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后发贴时间", @"Convert.ToDateTime(行[""最后发贴时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后发贴作者地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/"+(是否WML网页?"":"3G_")+@"User.aspx?ID=""+行[""ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("最后发贴作者昵称", @"Server.HtmlEncode(行[""最后发贴作者昵称""].ToString())");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, "", 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 版块列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            方法库 += "\t\tString SQL=\"SELECT " + 查询字段 + " FROM [\"+程序.数据表前缀+\"社区_论坛_版块] WHERE [所属版块]=" + 所属版块+" ORDER BY ";

            switch (排序)
            {
                case 0:
                    方法库 += "[创建时间]";
                    break;
                case 1:
                    方法库 += "[创建时间] DESC";
                    break;
                case 2:
                    方法库 += "[排序]";
                    break;
                case 3:
                    方法库 += "[贴子数] DESC";
                    break;
                case 4:
                    方法库 += "[回贴数] DESC";
                    break;
                case 5:
                    方法库 += "[今日发贴数] DESC";
                    break;
                case 6:
                    方法库 += "[今日回贴数] DESC";
                    break;
                default:
                    方法库 += "[最后发贴时间] DESC";
                    break;
            }

            方法库 += "\";\r\n";
            方法库 += "\t\tSqlCommand 语句=new SqlCommand(SQL,访问.连接);\r\n";
            生成查询结果列表(一行显示数量,
                行格式,
                行代码,
                分隔代码);
            return "\t\t版块列表" + 随机值 + "();\r\n";
        }
        private String 编译栏目列表(String 类型, String 所属栏目, int 排序, String 格式, String 行格式, String 分隔代码, int 一行显示数量)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("栏目地址", "ID,外部链接地址");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("栏目名称", "Server.HtmlEncode(行[\"栏目名称\"].ToString())");
            字段代码.Add("栏目地址", @"行[""外部链接地址""].ToString()!=""""?Server.HtmlEncode(常用.处理地址(行[""外部链接地址""].ToString(),访问.用户[""标识""].ToString())):Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目简介", @"常用.UBB转换(常用.截取字符串(行[""栏目简介""].ToString(),100),访问.用户)");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, "", 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 栏目列表" + 随机值 + "()\r\n" +
                "\t{\r\n";


            方法库 += "\t\tString SQL=\"SELECT " + 查询字段 + " FROM [\"+程序.数据表前缀+\"内容_栏目] WHERE [是否隐藏]=@是否隐藏\";\r\n";
            if (类型 != "")
                方法库 += "\t\tSQL+=\" AND [栏目类型]='" + 类型 + "'\";\r\n";
            String[] IDS = 所属栏目.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
            if (IDS.Length > 0)
            {
                方法库 += "\t\tSQL+=\" AND (";
                for (int i = 0; i < IDS.Length; i++)
                    if (i == 0)
                        方法库 += "[所属栏目]=" + IDS[i];
                    else
                        方法库 += " OR [所属栏目]=" + IDS[i];
                方法库 += ")\";\r\n";
            }
            switch (排序)
            {
                case 0:
                    方法库 += "\t\tSQL+=\" ORDER BY [ID]\";\r\n";
                    break;
                case 1:
                    方法库 += "\t\tSQL+=\" ORDER BY [ID] DESC\";\r\n";
                    break;
            }
            方法库 += "\t\tSqlCommand 语句=new SqlCommand(SQL,访问.连接);\r\n";
            方法库 += "\t\t语句.Parameters.Add(\"@是否隐藏\",SqlDbType.Bit).Value=false;\r\n";
            生成查询结果列表(一行显示数量,
                行格式,
                行代码,
                分隔代码);

            return "\t\t栏目列表" + 随机值 + "();\r\n";
        }
        public String 编译文章列表(String 所属栏目,bool 是否动态栏目ID, int 是否推荐, int 是否随机, int 排序, int 数量, String 格式, String 交替格式, int 字数, String 时间格式, String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("标题", "标题,标题样式_粗体,标题样式_斜体,标题样式_删除线,标题样式_颜色");
            必须字段.Add("栏目名称", "所属栏目");
            必须字段.Add("文章地址", "ID,所属栏目,外部链接");
            必须字段.Add("栏目地址", "所属栏目");
            必须字段.Add("评论地址", "ID,所属栏目");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("标题", "常用.标题样式(行[\"标题\"].ToString(),Convert.ToBoolean(行[\"标题样式_粗体\"]),Convert.ToBoolean(行[\"标题样式_斜体\"]),Convert.ToBoolean(行[\"标题样式_删除线\"]),Convert.ToString(行[\"标题样式_颜色\"])," + 字数 + ")");
            字段代码.Add("文章地址", @"行[""外部链接""].ToString()!=""""?Server.HtmlEncode(常用.处理地址(行[""外部链接""].ToString(),访问.用户[""标识""].ToString())):Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Content.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+行[""所属栏目""],访问.用户[""标识""].ToString()))");
            字段代码.Add("评论地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Comment.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目名称", @"Server.HtmlEncode(常用.获取栏目名称(Convert.ToInt32(行[""所属栏目""])))");
            字段代码.Add("发布时间", @"Convert.ToDateTime(行[""发布时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("作者", @"Server.HtmlEncode(行[""作者""].ToString())");
            字段代码.Add("文章来源", @"Server.HtmlEncode(行[""文章来源""].ToString())");
            字段代码.Add("文章简介", @"Server.HtmlEncode(行[""文章简介""].ToString())");
            字段代码.Add("最后评论时间", @"Convert.ToDateTime(行[""最后评论时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后收藏时间", @"Convert.ToDateTime(行[""最后收藏时间""]).ToString(""" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 文章列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成内容列表条件(所属栏目,是否动态栏目ID,是否推荐,排序,数量, 查询字段, true, "文章");
            生成内容列表条件(所属栏目,是否动态栏目ID,是否推荐,排序,数量, 查询字段, false, "文章");

            生成查询结果列表(数量, 行代码, 是否随机 == 1,空记录代码);

            return "\t\t文章列表" + 随机值 + "();\r\n";
        }
        public String 编译图片列表(String 所属栏目,bool 是否动态栏目ID,int 是否推荐,int 是否随机,int 排序,int 数量,String 格式,String 交替格式,int 字数,String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("标题", "标题,标题样式_粗体,标题样式_斜体,标题样式_删除线,标题样式_颜色");
            必须字段.Add("栏目名称", "所属栏目");
            必须字段.Add("图片地址", "ID,所属栏目,外部链接");
            必须字段.Add("栏目地址", "所属栏目");
            必须字段.Add("评论地址", "ID,所属栏目");
            必须字段.Add("图片内容", "文件资源");
            必须字段.Add("随机图片", "文件资源");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("标题", "常用.标题样式(行[\"标题\"].ToString(),Convert.ToBoolean(行[\"标题样式_粗体\"]),Convert.ToBoolean(行[\"标题样式_斜体\"]),Convert.ToBoolean(行[\"标题样式_删除线\"]),Convert.ToString(行[\"标题样式_颜色\"])," + 字数 + ")");
            字段代码.Add("图片地址", @"行[""外部链接""].ToString()!=""""?Server.HtmlEncode(常用.处理地址(行[""外部链接""].ToString(),访问.用户[""标识""].ToString())):Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Content.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+行[""所属栏目""],访问.用户[""标识""].ToString()))");
            字段代码.Add("评论地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Comment.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目名称", @"Server.HtmlEncode(常用.获取栏目名称(Convert.ToInt32(行[""所属栏目""])))");
            字段代码.Add("发布时间", @"Convert.ToDateTime(行[""发布时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后评论时间", @"Convert.ToDateTime(行[""最后评论时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后收藏时间", @"Convert.ToDateTime(行[""最后收藏时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("图片内容", @"常用.显示图片(行[""文件资源""].ToString(),""图片"",false)");
            字段代码.Add("随机图片", @"常用.显示图片(行[""文件资源""].ToString(),""图片"",true)");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 图片列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成内容列表条件(所属栏目,是否动态栏目ID,是否推荐,排序,数量, 查询字段, true,"图片");
            生成内容列表条件(所属栏目,是否动态栏目ID,是否推荐,排序,数量, 查询字段, false,"图片");

            生成查询结果列表(数量, 行代码, 是否随机 == 1,空记录代码);

            return "\t\t图片列表" + 随机值 + "();\r\n";
        }
        public String 编译软件列表(String 所属栏目,bool 是否动态栏目ID,int 是否推荐,int 是否随机,int 排序,int 数量,String 格式,String 交替格式,int 字数,String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("标题", "标题,标题样式_粗体,标题样式_斜体,标题样式_删除线,标题样式_颜色");
            必须字段.Add("栏目名称", "所属栏目");
            必须字段.Add("软件地址", "ID,所属栏目,外部链接");
            必须字段.Add("栏目地址", "所属栏目");
            必须字段.Add("评论地址", "ID,所属栏目");
            必须字段.Add("图片内容", "图片文件");
            必须字段.Add("随机图片", "图片文件");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("标题", "常用.标题样式(行[\"标题\"].ToString(),Convert.ToBoolean(行[\"标题样式_粗体\"]),Convert.ToBoolean(行[\"标题样式_斜体\"]),Convert.ToBoolean(行[\"标题样式_删除线\"]),Convert.ToString(行[\"标题样式_颜色\"])," + 字数 + ")");
            字段代码.Add("软件简介", "Server.HtmlEncode(行[\"软件简介\"].ToString())");
            字段代码.Add("运行平台", "Server.HtmlEncode(行[\"运行平台\"].ToString())");
            字段代码.Add("软件地址", @"行[""外部链接""].ToString()!=""""?Server.HtmlEncode(常用.处理地址(行[""外部链接""].ToString(),访问.用户[""标识""].ToString())):Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Content.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+行[""所属栏目""],访问.用户[""标识""].ToString()))");
            字段代码.Add("评论地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Comment.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目名称", @"Server.HtmlEncode(常用.获取栏目名称(Convert.ToInt32(行[""所属栏目""])))");
            字段代码.Add("发布时间", @"Convert.ToDateTime(行[""发布时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后评论时间", @"Convert.ToDateTime(行[""最后评论时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后收藏时间", @"Convert.ToDateTime(行[""最后收藏时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("图片内容", @"常用.显示图片(行[""图片文件""].ToString(),""软件"",false)");
            字段代码.Add("随机图片", @"常用.显示图片(行[""图片文件""].ToString(),""软件"",true)");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 软件列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成内容列表条件(所属栏目,是否动态栏目ID,是否推荐,排序,数量, 查询字段, true,"软件");
            生成内容列表条件(所属栏目,是否动态栏目ID,是否推荐,排序,数量, 查询字段, false,"软件");

            生成查询结果列表(数量, 行代码, 是否随机 == 1, 空记录代码);

            return "\t\t软件列表" + 随机值 + "();\r\n";
        }
        public String 编译音乐列表(String 所属栏目,bool 是否动态栏目ID,int 是否推荐,int 是否随机,int 排序,int 数量,String 格式,String 交替格式,int 字数,String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("标题", "标题,标题样式_粗体,标题样式_斜体,标题样式_删除线,标题样式_颜色");
            必须字段.Add("栏目名称", "所属栏目");
            必须字段.Add("音乐地址", "ID,所属栏目,外部链接");
            必须字段.Add("栏目地址", "所属栏目");
            必须字段.Add("评论地址", "ID,所属栏目");
            必须字段.Add("歌手链接", "歌手名称");
            必须字段.Add("专辑链接", "所属专辑");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("标题", "常用.标题样式(行[\"标题\"].ToString(),Convert.ToBoolean(行[\"标题样式_粗体\"]),Convert.ToBoolean(行[\"标题样式_斜体\"]),Convert.ToBoolean(行[\"标题样式_删除线\"]),Convert.ToString(行[\"标题样式_颜色\"])," + 字数 + ")");
            字段代码.Add("音乐地址", @"行[""外部链接""].ToString()!=""""?Server.HtmlEncode(常用.处理地址(行[""外部链接""].ToString(),访问.用户[""外部链接""].ToString())):Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Content.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+行[""所属栏目""],访问.用户[""标识""].ToString()))");
            字段代码.Add("评论地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Comment.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("歌手链接", @"Convert.ToString(行[""歌手名称""].ToString())==""""?""未知"":""<a href=\""""+Server.HtmlEncode(常用.处理地址(程序.安装位置+"""+(是否WML网页?"":"3G_")+@"Singer.aspx?g=""+Server.UrlEncode(行[""歌手名称""].ToString()),访问.用户[""标识""].ToString()))+""\"">""+Server.HtmlEncode(行[""歌手名称""].ToString())+""</a>""");
            字段代码.Add("专辑链接", @"Convert.ToString(行[""所属专辑""].ToString())==""""?""未知"":""<a href=\""""+Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Album.aspx?g=""+Server.UrlEncode(行[""所属专辑""].ToString()),访问.用户[""标识""].ToString()))+""\"">""+Server.HtmlEncode(行[""所属专辑""].ToString())+""</a>""");
            字段代码.Add("歌手名称", @"Server.HtmlEncode(行[""歌手名称""].ToString())");
            字段代码.Add("所属专辑", @"Server.HtmlEncode(行[""所属专辑""].ToString())");
            字段代码.Add("栏目名称", @"Server.HtmlEncode(常用.获取栏目名称(Convert.ToInt32(行[""所属栏目""])))");
            字段代码.Add("发布时间", @"Convert.ToDateTime(行[""发布时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后评论时间", @"Convert.ToDateTime(行[""最后评论时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后收藏时间", @"Convert.ToDateTime(行[""最后收藏时间""]).ToString(""" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 音乐列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成内容列表条件(所属栏目,是否动态栏目ID,是否推荐,排序,数量, 查询字段, true,"音乐");
            生成内容列表条件(所属栏目,是否动态栏目ID, 是否推荐, 排序, 数量, 查询字段, false, "音乐");

            生成查询结果列表(数量, 行代码, 是否随机 == 1, 空记录代码);

            return "\t\t音乐列表" + 随机值 + "();\r\n";
        }
        public String 编译视频列表(String 所属栏目,bool 是否动态栏目ID,int 是否推荐,int 是否随机,int 排序,int 数量,String 格式,String 交替格式,String 下载文字,int 字数,String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("标题", "标题,标题样式_粗体,标题样式_斜体,标题样式_删除线,标题样式_颜色");
            必须字段.Add("栏目名称", "所属栏目");
            必须字段.Add("视频地址", "ID,所属栏目,外部链接");
            必须字段.Add("栏目地址", "所属栏目");
            必须字段.Add("评论地址", "ID,所属栏目");
            必须字段.Add("下载链接", "视频文件");
            必须字段.Add("视频大小", "视频文件");
            必须字段.Add("图片内容", "图片文件");
            必须字段.Add("随机图片", "图片文件");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("标题", "常用.标题样式(行[\"标题\"].ToString(),Convert.ToBoolean(行[\"标题样式_粗体\"]),Convert.ToBoolean(行[\"标题样式_斜体\"]),Convert.ToBoolean(行[\"标题样式_删除线\"]),Convert.ToString(行[\"标题样式_颜色\"])," + 字数 + ")");
            字段代码.Add("视频地址", @"行[""外部链接""].ToString()!=""""?Server.HtmlEncode(常用.处理地址(行[""外部链接""].ToString(),访问.用户[""标识""].ToString())):Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Content.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+行[""所属栏目""],访问.用户[""标识""].ToString()))");
            字段代码.Add("评论地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Comment.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目名称", @"Server.HtmlEncode(常用.获取栏目名称(Convert.ToInt32(行[""ID""])))");
            字段代码.Add("下载链接", @"Convert.ToString(行[""视频文件""])==""""?"""":""<a href=\""""+Server.HtmlEncode(Convert.ToString(行[""视频文件""]).Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries)[0])+""\"">" + HttpUtility.HtmlEncode(下载文字).Replace("@视频大小@", @"""+常用.计算文件大小(new FileInfo(Server.MapPath(Convert.ToString(行[""视频文件""]).Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries)[0])).Length)+""") + "</a>\"");
            字段代码.Add("视频大小", @"Convert.ToString(行[""视频文件""])==""""?""未知"":常用.计算文件大小(new FileInfo(Server.MapPath(Convert.ToString(行[""视频文件""]).Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries)[0])).Length)");
            字段代码.Add("视频简介", @"Server.HtmlEncode(常用.截取字符串(Convert.ToString(行[""视频简介""]),100))");
            字段代码.Add("发布时间", @"Convert.ToDateTime(行[""发布时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后评论时间", @"Convert.ToDateTime(行[""最后评论时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后收藏时间", @"Convert.ToDateTime(行[""最后收藏时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("图片内容", @"常用.显示图片(行[""视频图片""].ToString(),""视频"",false)");
            字段代码.Add("随机图片", @"常用.显示图片(行[""视频图片""].ToString(),""视频"",true)");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 视频列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成内容列表条件(所属栏目,是否动态栏目ID,是否推荐,排序,数量, 查询字段, true,"视频");
            生成内容列表条件(所属栏目,是否动态栏目ID,是否推荐,排序,数量, 查询字段, false, "视频");

            生成查询结果列表(数量, 行代码, 是否随机 == 1,空记录代码);

            return "\t\t视频列表" + 随机值 + "();\r\n";
        }
        private String 编译评论列表(String 内容类型,String 所属栏目,String 所属用户,String 所属内容,int 是否随机,int 排序,int 数量,String 格式,String 交替格式,int 字数,String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("评论地址", "ID,内容ID,所属栏目");
            必须字段.Add("栏目地址", "所属栏目");
            必须字段.Add("栏目名称", "所属栏目");
            必须字段.Add("评论用户地址", "评论用户ID");
            必须字段.Add("内容地址", "所属栏目,内容ID");
            必须字段.Add("支持地址", "ID");
            必须字段.Add("反对地址", "ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("评论地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Comment.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""内容ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+行[""所属栏目""],访问.用户[""标识""].ToString()))");
            字段代码.Add("栏目名称", @"Server.HtmlEncode(常用.获取栏目名称(Convert.ToInt32(行[""所属栏目""])))");
            字段代码.Add("评论用户地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/"+(是否WML网页?"":"3G_")+@"User.aspx?ID=""+行[""评论用户ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("评论用户昵称", @"Server.HtmlEncode(行[""评论用户昵称""].ToString())");
            字段代码.Add("内容地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+"""+(是否WML网页?"":"3G_")+@"Content.aspx?CID=""+行[""所属栏目""]+""&ID=""+行[""内容ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("内容标题", @"Server.HtmlEncode(行[""内容标题""].ToString())");
            字段代码.Add("评论内容", @"Server.HtmlEncode(常用.截取字符串(行[""评论内容""].ToString()," + 字数 + "))");
            字段代码.Add("支持地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+"""+(是否WML网页?"":"3G_")+@"Comment_Case.aspx?z=true&ID=""+行[""ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("反对地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+"""+(是否WML网页?"":"3G_")+@"Comment_Case.aspx?z=false&ID=""+行[""ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("发表时间", @"Convert.ToDateTime(行[""发表时间""]).ToString(""" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 评论列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成评论列表条件(内容类型,所属栏目,所属用户,所属内容,排序,数量, 查询字段, true);
            生成评论列表条件(内容类型,所属栏目,所属用户,所属内容,排序,数量, 查询字段, false);

            生成查询结果列表(数量, 行代码, 是否随机 == 1,空记录代码);

            return "\t\t评论列表" + 随机值 + "();\r\n";
        }
        private String 编译歌手列表(int 是否随机,int 排序,int 数量,String 格式,String 交替格式,String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("图片内容", "歌手图片");
            必须字段.Add("歌手地址", "ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("图片内容", "\"<img src=\\\"\"+行[\"歌手图片\"]+\"\\\" alt=\\\"图片\\\"\"+常用.获取图片宽度高度(\"歌手\")+\" />\"");
            字段代码.Add("歌手地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+"""+(是否WML网页?"":"3G_")+@"Singer.aspx?ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("歌手/乐队名称", @"Server.HtmlEncode(行[""歌手/乐队名称""].ToString())");
            字段代码.Add("歌手简介", @"Server.HtmlEncode(常用.截取字符串(行[""歌手简介""].ToString(),100))");
            字段代码.Add("创建时间", @"Convert.ToDateTime(行[""创建时间""]).ToString(""" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 歌手列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成歌手列表条件(排序,数量, 查询字段, true);
            生成歌手列表条件(排序, 数量, 查询字段, false);

            生成查询结果列表(数量, 行代码, 是否随机 == 1,空记录代码);

            return "\t\t歌手列表" + 随机值 + "();\r\n"; ;
        }
        private String 编译专辑列表(int 是否随机,int 排序,int 数量,String 格式,String 交替格式,String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("专辑地址", "ID");
            必须字段.Add("图片内容", "专辑封面");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("专辑地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"Album.aspx?ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("图片内容", "行[\"专辑封面\"].ToString==\"\"?\"\":\"<img src=\\\"\"+行[\"专辑封面\"]+\"\\\" alt=\\\"图片\\\"\"+常用.获取图片宽度高度(\"专辑\")+\" />\"");
            字段代码.Add("专辑名称", @"Server.HtmlEncode(行[""专辑名称""].ToString())");
            字段代码.Add("专辑歌手", @"Server.HtmlEncode(行[""专辑歌手""].ToString())");
            字段代码.Add("专辑简介", @"Server.HtmlEncode(常用.截取字符串(行[""专辑简介""].ToString(),100))");
            字段代码.Add("创建时间", @"Convert.ToDateTime(行[""创建时间""]).ToString(""" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 专辑列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成专辑列表条件(排序,数量, 查询字段, true);
            生成专辑列表条件(排序,数量, 查询字段, false);

            生成查询结果列表(数量, 行代码, 是否随机 == 1,空记录代码);

            return "\t\t专辑列表" + 随机值 + "();\r\n";
        }
        private String 编译会员列表(int 数量, int 排序, String 用户组, String 格式, String 交替格式, int 是否在线,int 是否随机, String 时间格式, String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("会员资料地址", "ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("昵称", @"Server.HtmlEncode(行[""昵称""].ToString())");
            字段代码.Add("手机号", @"Convert.ToInt64(行[""手机号""])==0?"""":Convert.ToString(行[""手机号""]).Substring(0,7)+""****""");
            字段代码.Add("性别", @"Convert.ToBoolean(行[""性别""])?程序.设置[""单位名词_男性名词""].ToString():程序.设置[""单位名词_女性名词""].ToString()");
            字段代码.Add("个人签名", "Convert.IsDBNull(行[\"个人签名\"])?\"\":常用.UBB转换(Server.HtmlEncode(行[\"个人签名\"].ToString()),访问.用户[\"标识\"].ToString())");
            字段代码.Add("会员资料地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"User.aspx?ID=""+行[""ID""]+""&Rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("最后访问时间", @"Convert.ToDateTime(行[""最后访问时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后登录时间", @"Convert.ToDateTime(行[""最后登录时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("最后登录IP", @"Convert.ToString(行[""最后登录IP""])==""""?"""":行[""最后登录IP""].ToString().Substring(0,行[""最后登录IP""].ToString().Length-4)+""****""");
            字段代码.Add("所在位置", @"Server.HtmlEncode(行[""所在位置""].ToString())");
            字段代码.Add("创建时间", @"Convert.ToDateTime(行[""创建时间""]).ToString(""" + 时间格式 + "\")");
            字段代码.Add("头像", @"Convert.ToString(行[""头像""])==""""?"""":""<img src=\""""+行[""头像""]+""\"" alt=\""头像\""""+常用.获取头像宽度高度()+"" />""");
            字段代码.Add("勋章", @"常用.显示所有图片(行[""勋章""].ToString())");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 会员列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成会员列表条件(用户组,是否在线,排序,数量, 查询字段, true);
            生成会员列表条件(用户组,是否在线,排序,数量, 查询字段, false);

            生成查询结果列表(数量, 行代码, 是否随机 == 1,空记录代码);

            return "\t\t会员列表" + 随机值 + "();\r\n";
        }
        private String 编译贴子列表(String 所属版块,String 状态,int 是否随机,int 排序,int 数量,String 格式,String 交替格式,int 字数,String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("贴子地址", "ID,所属版块");
            必须字段.Add("作者地址", "作者ID");
            必须字段.Add("贴子状态", "是否置顶,是否精华,是否锁定,回贴数,发表时间,贴子类型");
            必须字段.Add("版块名称", "所属版块");
            必须字段.Add("版块地址", "所属版块");
            必须字段.Add("回贴地址", "所属版块,ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("贴子地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"Topic.aspx?BID=""+行[""所属版块""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("标题", @"Server.HtmlEncode(行[""标题""].ToString())");
            字段代码.Add("贴子简介", @"Server.HtmlEncode(行[""贴子简介""].ToString())");
            字段代码.Add("作者地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/"+(是否WML网页?"":"3G_")+@"User.aspx?ID=""+行[""作者ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("作者昵称", @"Server.HtmlEncode(行[""作者昵称""].ToString())");
            字段代码.Add("贴子状态", @"常用.贴子状态代码(行)");
            字段代码.Add("版块地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"Board.aspx?ID=""+行[""所属版块""],访问.用户[""标识""].ToString()))");
            字段代码.Add("版块名称", @"Server.HtmlEncode(常用.获取版块名称(Convert.ToInt32(行[""所属版块""])))");
            字段代码.Add("发表时间", @"Convert.ToDateTime(行[""发表时间""]).ToString("""+时间格式+@""")");
            字段代码.Add("回贴地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"Reply.aspx?BID=""+行[""所属版块""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 贴子列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成贴子列表条件(所属版块,状态,排序,数量, 查询字段, true);
            生成贴子列表条件(所属版块,状态,排序,数量, 查询字段, false);

            生成查询结果列表(数量, 行代码, 是否随机 == 1, 空记录代码);

            return "\t\t贴子列表" + 随机值 + "();\r\n";
        }
        private String 编译回贴列表(String 所属版块,String 所属用户,String 所属贴子,int 是否随机,int 排序,int 数量,String 格式,String 交替格式,int 字数,String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);

            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("回贴列表地址", "所属版块,ID");
            必须字段.Add("版块地址", "所属版块");
            必须字段.Add("版块名称", "所属版块");
            必须字段.Add("回贴用户地址", "回贴用户ID");
            必须字段.Add("贴子地址", "所属版块,贴子ID");
            必须字段.Add("支持地址","ID");
            必须字段.Add("反对地址","ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("回贴列表地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"Reply.aspx?BID=""+行[""所属版块""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("版块地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"Board.aspx?ID=""+行[""所属版块""],访问.用户[""标识""].ToString()))");
            字段代码.Add("版块名称", @"常用.获取版块名称(Convert.ToInt32(行[""所属版块""]))");
            字段代码.Add("回贴用户地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/"+(是否WML网页?"":"3G_")+@"User.aspx?ID=""+行[""回贴用户ID""]+""&rurl=""+Server.UrlEncode(Request.Url.ToString()),访问.用户[""标识""].ToString()))");
            字段代码.Add("回贴用户昵称", @"Server.HtmlEncode(行[""回贴用户昵称""].ToString())");
            字段代码.Add("回贴用户IP", @"行[""回贴用户IP""].ToString()==""""?"""":行[""回贴用户IP""].ToString().Substring(0,行[""回贴用户IP""].ToString().Length-4)+""****""");
            字段代码.Add("回贴用户地区", @"Server.HtmlEncode(行[""回贴用户地区""].ToString())");
            字段代码.Add("贴子地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"Topic.aspx?BID=""+行[""所属版块""]+""&ID=""+行[""贴子ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("贴子标题", @"Server.HtmlEncode(行[""贴子标题""].ToString())");
            字段代码.Add("贴子内容", @"Server.HtmlEncode(常用.截取字符串(行[""回贴内容""].ToString()," + 字数 + "))");
            字段代码.Add("支持地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"Reply_Case.aspx?z=true&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("反对地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""Club/" + (是否WML网页 ? "" : "3G_") + @"Reply_Case.aspx?z=false&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("发表时间", @"Convert.ToDateTime(行[""发表时间""]).ToString(""" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 回贴列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            if (是否随机 == 1)
                生成回贴列表条件(所属版块,所属用户,所属贴子,排序,数量, 查询字段, true);
            生成回贴列表条件(所属版块,所属用户,所属贴子,排序,数量, 查询字段, false);

            生成查询结果列表(数量, 行代码, 是否随机 == 1,空记录代码);

            return "\t\t回贴列表" + 随机值 + "();\r\n";
        }
        private String 编译留言列表(String 所属留言本,int 保密状态,int 回复状态,int 排序,int 数量,String 格式,String 交替格式,String 保密状态文字,String 回复状态文字,int 字数,String 时间格式,String 空记录代码)
        {
            String 随机值 = 常用.随机字符(8);
            
            Hashtable 必须字段 = new Hashtable();
            必须字段.Add("序号", "");
            必须字段.Add("留言地址", "ID,留言本ID");
            必须字段.Add("留言本地址", "留言本ID");
            Hashtable 字段代码 = new Hashtable();
            字段代码.Add("序号", "i+1");
            字段代码.Add("留言地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"L_Message.aspx?GID=""+行[""留言本ID""]+""&ID=""+行[""ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("留言本地址", @"Server.HtmlEncode(常用.处理地址(程序.安装位置+""" + (是否WML网页 ? "" : "3G_") + @"GuestBook.aspx?ID=""+行[""留言本ID""],访问.用户[""标识""].ToString()))");
            字段代码.Add("留言本名称", @"Server.HtmlEncode(行[""留言本名称""].ToString())");
            字段代码.Add("标题", @"Server.HtmlEncode(常用.截取字符串(行[""标题""].ToString(),"+字数+"))");
            字段代码.Add("发表人", @"Server.HtmlEncode(行[""发表人""].ToString())");
            字段代码.Add("留言表情", @"Server.HtmlEncode(行[""留言表情""].ToString())");
            字段代码.Add("留言内容", @"Server.HtmlEncode(行[""留言内容""].ToString())");
            字段代码.Add("留言时间", @"Convert.ToDateTime(行[""留言时间""]).ToString(""" + 时间格式 + "\")");
            String[] 保密状态数组 = 保密状态文字.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
            字段代码.Add("是否保密", @"Convert.ToBoolean(行[""是否保密""])?@""" + 保密状态数组[0].Replace("\"", "\"\"") + @""":@""" + 保密状态数组[1].Replace("\"", "\"\"") + @"""");
            String[] 回复状态数组 = 回复状态文字.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
            字段代码.Add("是否已回复", @"Convert.ToBoolean(行[""是否已回复""])?@""" + 回复状态数组[0].Replace("\"", "\"\"") + @""":@""" + 回复状态数组[1].Replace("\"", "\"\"") + @"""");
            字段代码.Add("回复内容", @"Server.HtmlEncode(行[""回复内容""].ToString())");
            字段代码.Add("回复时间", @"Convert.ToDateTime(行[""回复时间""]).ToString(""" + 时间格式 + "\")");

            String 查询字段, 行代码;
            查询字段 = 生成查询字段(格式, 交替格式, 必须字段, 字段代码, out 行代码);

            方法库 += "\tprivate void 留言列表" + 随机值 + "()\r\n" +
                "\t{\r\n";

            生成留言列表条件(所属留言本, 保密状态, 回复状态, 排序, 数量, 查询字段, false);

            生成查询结果列表(数量, 行代码,false, 空记录代码);

            return "\t\t留言列表" + 随机值 + "();\r\n";
        }
        private void 生成留言列表条件(String 所属留言本,int 保密状态,int 回复状态,int 排序,int 数量, String 查询字段, bool 是否数量语句)
        {
            String 语句名称 = 是否数量语句 ? "数量语句" : "语句";
            方法库 += "\t\tSqlCommand " + 语句名称 + "=new SqlCommand(\"SELECT " + (是否数量语句 ? "COUNT(ID)" : 查询字段) + " FROM [\"+程序.数据表前缀+\"其它_留言_留言] WHERE 1=1";

            if (所属留言本 != "" && 所属留言本 != "0")
            {
                String[] 留言本数组 = 所属留言本.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                String 所属留言本查询 = "(";
                for (int i = 0; i < 留言本数组.Length; i++)
                    所属留言本查询 += (i == 0 ? "" : " OR ") + "[留言本ID]=" + 留言本数组[i];
                所属留言本查询 += ")";
                方法库 += " AND " + 所属留言本查询;
            }
            if (保密状态 == 1)
                方法库 += " AND [是否保密]=0";
            if (回复状态 == 1)
                方法库 += " AND [是否已回复]=1";
            方法库+=" ORDER BY ";
            switch (排序)
            {
                case 0:
                    方法库 += "[ID]";
                    break;
                case 1:
                    方法库 += "[ID] DESC";
                    break;
                default:
                    方法库 += "[回复时间] DESC";
                    break;
            }

            方法库 += "\",访问.连接);\r\n";
            if (是否数量语句)
            {
                方法库 += "\t\tint 结果数量=Convert.ToInt32(数量语句.ExecuteScalar());\r\n";
                方法库 += "\t\tif(结果数量>" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机留言组数\"]))\r\n";
                方法库 += "\t\t\t结果数量=" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机留言组数\"]);\r\n";
                方法库 += "\t\t后台分页 分页=new 后台分页(结果数量,1," + 数量 + ",\"\");\r\n";
            }
        }
        private void 生成回贴列表条件(String 所属版块,String 所属用户,String 所属贴子,int 排序,int 数量, String 查询字段, bool 是否数量语句)
        {
            String 语句名称 = 是否数量语句 ? "数量语句" : "语句";
            方法库 += "\t\tSqlCommand " + 语句名称 + "=new SqlCommand(\"SELECT " + (是否数量语句 ? "COUNT(ID)" : 查询字段) + " FROM [\"+程序.数据表前缀+\"社区_论坛_回贴] WHERE 1=1";

            if (所属版块 != "" && 所属版块 != "0")
            {
                String[] 版块数组 = 所属版块.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                String 所属版块查询 = "(";
                for (int i = 0; i < 版块数组.Length; i++)
                    所属版块查询 += (i == 0 ? "" : " OR ") + "[所属版块]=" + 版块数组[i];
                所属版块查询 += ")";
                方法库 += " AND " + 所属版块查询;
            }
            if (所属用户 != "" && 所属用户 != "0")
            {
                String[] 用户数组 = 所属用户.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                String 所属用户查询 = "(";
                for (int i = 0; i < 用户数组.Length; i++)
                    所属用户查询 += (i == 0 ? "" : " OR ") + "[回贴用户ID]=" + 用户数组[i];
                所属用户查询 += ")";
                方法库 += " AND " + 所属用户查询;
            }
            if (所属贴子 != "" && 所属贴子 != "0")
            {
                String[] 贴子数组 = 所属贴子.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                String 所属贴子查询 = "(";
                for (int i = 0; i < 贴子数组.Length; i++)
                    所属贴子查询 += (i == 0 ? "" : " OR ") + "[贴子ID]=" + 贴子数组[i];
                所属贴子查询 += ")";
                方法库 += " AND " + 所属贴子查询;
            }
            if (!是否数量语句)
            {
                方法库 += " ORDER BY ";
                switch (排序)
                {
                    case 0:
                        方法库 += "[ID]";
                        break;
                    case 1:
                        方法库 += "[ID] DESC";
                        break;
                    case 2:
                        方法库 += "[支持] DESC,[反对] DESC";
                        break;
                    default:
                        方法库 += "[反对] DESC,[支持] DESC";
                        break;
                }
            }
            方法库 += "\",访问.连接);\r\n";
            if (是否数量语句)
            {
                方法库 += "\t\tint 结果数量=Convert.ToInt32(数量语句.ExecuteScalar());\r\n";
                方法库 += "\t\tif(结果数量>" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机回贴组数\"]))\r\n";
                方法库 += "\t\t\t结果数量=" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机回贴组数\"]);\r\n";
                方法库 += "\t\t后台分页 分页=new 后台分页(结果数量,1," + 数量 + ",\"\");\r\n";
            }
        }
        private void 生成贴子列表条件(String 所属版块,String 状态,int 排序,int 数量, String 查询字段, bool 是否数量语句)
        {
            String 语句名称 = 是否数量语句 ? "数量语句" : "语句";
            方法库 += "\t\tSqlCommand " + 语句名称 + "=new SqlCommand(\"SELECT " + (是否数量语句 ? "COUNT(ID)" : 查询字段) + " FROM [\"+程序.数据表前缀+\"社区_论坛_贴子] WHERE 1=1";

            if (所属版块 != ""&&所属版块!="0")
            {
                String[] 版块数组 = 所属版块.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                String 所属版块查询 = "(";
                for (int i = 0; i < 版块数组.Length; i++)
                    所属版块查询 += (i == 0 ? "" : " OR ") + "[所属版块]=" + 版块数组[i];
                所属版块查询 += ")";
                方法库 += " AND " + 所属版块查询;
            }

            if (状态 != "")
            {
                String[] 状态数组 = 状态.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                String 状态查询 = "(";
                for (int i = 0; i < 状态数组.Length; i++)
                {
                    状态查询 += i == 0 ? "" : " OR ";
                    switch (Convert.ToInt32(状态数组[i]))
                    {
                        case 1:
                            状态查询 += "[是否置顶]=1";
                            break;
                        case 2:
                            状态查询 += "[是否精华]=1";
                            break;
                        case 3:
                            状态查询 += "[是否锁定]=1";
                            break;
                        case 4:
                            状态查询 += "[回贴数]>" + Convert.ToInt32(程序.设置["贴子状态_热门条件"]);
                            break;
                        case 5:
                            状态查询 += "[发表时间]>'" + (DateTime.Now - new TimeSpan(1, 0, 0, 0)) + "'";
                            break;
                    }
                }
                状态查询 += ")";
                方法库 += " AND " + 状态查询;
            }

            if (!是否数量语句)
            {
                方法库 += " ORDER BY ";
                switch (排序)
                {
                    case 0:
                        方法库 += "[ID]";
                        break;
                    case 1:
                        方法库 += "[ID] DESC";
                        break;
                    case 2:
                        方法库 += "[点击数] DESC";
                        break;
                    case 3:
                        方法库 += "[回贴数] DESC";
                        break;
                    default:
                        方法库 += "[最后回贴时间] DESC";
                        break;
                }
            }
            方法库 += "\",访问.连接);\r\n";
            if (是否数量语句)
            {
                方法库 += "\t\tint 结果数量=Convert.ToInt32(数量语句.ExecuteScalar());\r\n";
                方法库 += "\t\tif(结果数量>" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机贴子组数\"]))\r\n";
                方法库 += "\t\t\t结果数量=" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机贴子组数\"]);\r\n";
                方法库 += "\t\t后台分页 分页=new 后台分页(结果数量,1," + 数量 + ",\"\");\r\n";
            }
        }
        private void 生成会员列表条件(String 用户组,int 是否在线,int 排序,int 数量, String 查询字段, bool 是否数量语句)
        {
            String 语句名称 = 是否数量语句 ? "数量语句" : "语句";
            方法库 += "\t\tSqlCommand " + 语句名称 + "=new SqlCommand(\"SELECT " + (是否数量语句 ? "COUNT(ID)" : 查询字段) + " FROM [\"+程序.数据表前缀+\"社区_用户_用户] WHERE [用户类型]='会员'";

            String 查询参数 = "";
            if (用户组 != "")
            {
                String[] 用户组数组 = 用户组.Split('|');
                String 用户组查询 = "(";
                for (int i = 0; i < 用户组数组.Length; i++)
                    用户组查询 += (i == 0 ? "" : " OR ") + "[用户组]='" + 用户组数组[i] + "'";
                用户组查询 += ")";
                方法库 += " AND " + 用户组查询;
            }
            if (是否在线 == 1)
            {
                方法库 += " AND";
                方法库 += " [最后访问时间]>@最后访问时间";
                查询参数 = "\t\t"+语句名称+".Parameters.Add(\"@最后访问时间\",SqlDbType.DateTime).Value=DateTime.Now-new TimeSpan(0,Convert.ToInt32(程序.设置[\"离线时间\"]),0);\r\n";
            }
            if (!是否数量语句)
            {
                方法库 += " ORDER BY ";
                switch (排序)
                {
                    case 0:
                        方法库 += "[ID] DESC";
                        break;
                    case 1:
                        方法库 += "[积分] DESC";
                        break;
                    case 2:
                        方法库 += "[最后访问时间] DESC";
                        break;
                    case 3:
                        方法库 += "[最后登录时间] DESC";
                        break;
                    case 4:
                        方法库 += "[等级] DESC";
                        break;
                    case 5:
                        方法库 += "[今日访问次数] DESC";
                        break;
                }
            }
            方法库 += "\",访问.连接);\r\n";
            方法库 += 查询参数;
            if (是否数量语句)
                方法库 += "\t\t后台分页 分页=new 后台分页(Convert.ToInt32(数量语句.ExecuteScalar()),1" + 数量 + ",\"\");\r\n";
        }
        private void 生成评论列表条件(String 内容类型,String 所属栏目,String 所属用户,String 所属内容,int 排序,int 数量, String 查询字段, bool 是否数量语句)
        {
            String 语句名称 = 是否数量语句 ? "数量语句" : "语句";
            方法库 += "\t\tSqlCommand " + 语句名称 + "=new SqlCommand(\"SELECT " + (是否数量语句 ? "COUNT(ID)" : 查询字段) + " FROM [\"+程序.数据表前缀+\"内容_评论] WHERE 1=1";

            if (内容类型 != "")
            {
                String 类型条件 = "";
                String[] 类型数组 = 内容类型.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < 类型数组.Length; i++)
                    if (i == 0)
                        类型条件 += "[内容类型]='" + 类型数组[i] + "'";
                    else
                        类型条件 += " OR [内容类型]='" + 类型数组[i] + "'";
                方法库 += " AND (" + 类型条件 + ")";
            }

            if (所属栏目 != "")
            {
                String 栏目条件 = "";
                String[] 栏目数组 = 所属栏目.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < 栏目数组.Length; i++)
                    if (i == 0)
                        栏目条件 += "[所属栏目]=" + 栏目数组[i];
                    else
                        栏目条件 += " OR [所属栏目]=" + 栏目数组[i];
                方法库 += " AND (" + 栏目条件 + ")";
            }

            if (所属用户 != "")
            {
                String 用户条件 = "";
                String[] 用户数组 = 所属用户.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < 用户数组.Length; i++)
                    if (i == 0)
                        用户条件 += "[评论用户ID]=" + 用户数组[i];
                    else
                        用户条件 += " OR [评论用户ID]=" + 用户数组[i];
                方法库 += " AND (" + 用户条件 + ")";
            }

            if (所属内容 != "")
            {
                String 内容条件 = "";
                String[] 内容数组 = 所属内容.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < 内容数组.Length; i++)
                    if (i == 0)
                        内容条件 += "[内容ID]=" + 内容数组[i];
                    else
                        内容条件 += " OR [内容ID]=" + 内容数组[i];
                方法库 += " AND (" + 内容条件 + ")";
            }

            if (!是否数量语句)
            {
                方法库 += " ORDER BY ";
                switch (排序)
                {
                    case 0:
                        方法库 += "[发表时间]";
                        break;
                    case 1:
                        方法库 += "[发表时间] DESC";
                        break;
                    case 2:
                        方法库 += "[支持] DESC";
                        break;
                    default:
                        方法库 += "[反对] DESC";
                        break;
                }
            }
            方法库 += "\",访问.连接);\r\n";
            if (是否数量语句)
            {
                方法库 += "\t\tint 结果数量=Convert.ToInt32(数量语句.ExecuteScalar());\r\n";
                方法库 += "\t\tif(结果数量>" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机评论组数\"]))\r\n";
                方法库 += "\t\t\t结果数量=" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机评论组数\"]);\r\n";
                方法库 += "\t\t后台分页 分页=new 后台分页(结果数量,1," + 数量 + ",\"\");\r\n";
            }
        }
        private void 生成专辑列表条件(int 排序,int 数量, String 查询字段, bool 是否数量语句)
        {
            String 语句名称 = 是否数量语句 ? "数量语句" : "语句";
            方法库 += "\t\tSqlCommand " + 语句名称 + "=new SqlCommand(\"SELECT " + (是否数量语句 ? "COUNT(ID)" : 查询字段) + " FROM [\"+程序.数据表前缀+\"内容_音乐_专辑]";
            if (!是否数量语句)
            {
                方法库 += " ORDER BY ";
                switch (排序)
                {
                    case 0:
                        方法库 += "[创建时间]";
                        break;
                    default:
                        方法库 += "[创建时间] DESC";
                        break;
                }
            }
            方法库 += "\",访问.连接);\r\n";
            if (是否数量语句)
            {
                方法库 += "\t\tint 结果数量=Convert.ToInt32(数量语句.ExecuteScalar());\r\n";
                方法库 += "\t\tif(结果数量>" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机专辑组数\"]))\r\n";
                方法库 += "\t\t\t结果数量=" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机专辑组数\"]);\r\n";
                方法库 += "\t\t后台分页 分页=new 后台分页(结果数量,1," + 数量 + ",\"\");\r\n";
            }
        }
        private void 生成歌手列表条件(int 排序,int 数量, String 查询字段, bool 是否数量语句)
        {
            String 语句名称 = 是否数量语句 ? "数量语句" : "语句";
            方法库 += "\t\tSqlCommand " + 语句名称 + "=new SqlCommand(\"SELECT " + (是否数量语句 ? "COUNT(ID)" : 查询字段) + " FROM [\"+程序.数据表前缀+\"内容_音乐_歌手]";
            if (!是否数量语句)
            {
                方法库 += " ORDER BY ";
                switch (排序)
                {
                    case 0:
                        方法库 += "[创建时间]";
                        break;
                    default:
                        方法库 += "[创建时间] DESC";
                        break;
                }
            }
            方法库 += "\",访问.连接);\r\n";
            if (是否数量语句)
            {
                方法库 += "\t\tint 结果数量=Convert.ToInt32(数量语句.ExecuteScalar());\r\n";
                方法库 += "\t\tif(结果数量>" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机歌手组数\"]))\r\n";
                方法库 += "\t\t\t结果数量=" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机歌手组数\"]);\r\n";
                方法库 += "\t\t后台分页 分页=new 后台分页(结果数量,1," + 数量 + ",\"\");\r\n";
            }
        }
        private void 生成内容列表条件(String 所属栏目,bool 是否动态栏目ID,int 是否推荐,int 排序,int 数量, String 查询字段, bool 是否数量语句,String 内容类型)
        {
            String 语句名称 = 是否数量语句 ? "数量语句" : "语句";
            方法库 += "\t\tSqlCommand " + 语句名称 + "=new SqlCommand(\"SELECT " + (是否数量语句 ? "COUNT(ID)" : 查询字段) + " FROM [\"+程序.数据表前缀+\"内容_"+内容类型+"_"+内容类型+"] WHERE [是否审核]=@是否审核 AND [是否删除]=@是否删除";
            if (是否动态栏目ID)
                方法库 += " AND [所属栏目]=\"+" + 所属栏目 + "\"";
            else
                if (所属栏目 != "0" && 所属栏目 != "")
                {
                    String[] IDS = 所属栏目.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                    if (IDS.Length > 0)
                    {
                        方法库 += " AND (";
                        for (int i = 0; i < IDS.Length; i++)
                            if (i == 0)
                                方法库 += "[所属栏目]=" + IDS[i];
                            else
                                方法库 += " OR [所属栏目]=" + IDS[i];
                        方法库 += ")";
                    }
                }
            if (是否推荐 == 1)
                方法库 += " AND [是否推荐]=@是否推荐";
            if (!是否数量语句)
            {
                方法库 += " ORDER BY ";
                switch (排序)
                {
                    case 0:
                        方法库 += "[发布时间]";
                        break;
                    case 1:
                        方法库 += "[发布时间] DESC";
                        break;
                    case 2:
                        方法库 += "[点击数] DESC";
                        break;
                    case 3:
                        方法库 += "[日点击数] DESC";
                        break;
                    case 4:
                        方法库 += "[周点击数] DESC";
                        break;
                    case 5:
                        方法库 += "[收藏数] DESC";
                        break;
                    case 6:
                        方法库 += "[评论数] DESC";
                        break;
                    case 7:
                        方法库 += "[最后评论时间] DESC";
                        break;
                    case 8:
                        方法库 += "[最后收藏时间] DESC";
                        break;
                }
            }
            方法库 += "\",访问.连接);\r\n";
            方法库 += "\t\t" + 语句名称 + ".Parameters.Add(\"@是否审核\",SqlDbType.Bit).Value=false;\r\n";
            方法库 += "\t\t" + 语句名称 + ".Parameters.Add(\"@是否删除\",SqlDbType.Bit).Value=false;\r\n";
            if (是否推荐 == 1)
                方法库 += "\t\t" + 语句名称 + ".Parameters.Add(\"@是否推荐\",SqlDbType.Bit).Value=true;\r\n";
            if (是否数量语句)
            {
                方法库 += "\t\tint 结果数量=Convert.ToInt32(数量语句.ExecuteScalar());\r\n";
                方法库 += "\t\tif(结果数量>" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机" + 内容类型 + "组数\"]))\r\n";
                方法库 += "\t\t\t结果数量=" + 数量 + "*Convert.ToInt32(程序.设置[\"内容设置_随机" + 内容类型 + "组数\"]);\r\n";
                方法库 += "\t\t后台分页 分页=new 后台分页(结果数量,1," + 数量 + ",\"\");\r\n";
            }
        }
        private String 编译HTML编码(String 代码)
        {
            return "\t\t返回值.Append(Server.HtmlEncode(@\"" + 代码.Replace("\"", "\"\"") + "\"));\r\n";
        }
        private String 编译URL编码(String 代码)
        {
            return "\t\t返回值.Append(Server.UrlEncode(@\"" + 代码.Replace("\"", "\"\"") + "\"));\r\n";
        }
        public void 生成查询结果列表(int 数量, String 行代码,bool 是否随机,String 空记录代码)
        {
            方法库 += "\t\tDataSet 数据=new DataSet();\r\n";
            方法库 += "\t\tSqlDataAdapter 填充=new SqlDataAdapter(语句);\r\n";
            if (是否随机)
                方法库 += "\t\tint 随机数=常用.随机数(分页.总页数);\r\n" +
                    "\t\t填充.Fill(数据,随机数*" + 数量 + "," + 数量 + ",\"表\");\r\n";
            else
                方法库 += "\t\t填充.Fill(数据,0," + 数量 + ",\"表\");\r\n";
            方法库 += "\t\tif(数据.Tables[0].Rows.Count<1)\r\n";
            方法库 += "\t\t\t返回值.Append(@\"" + 空记录代码.Replace("\"", "\"\"") + "\");\r\n";
            方法库 += "\t\tfor(int i=0;i<数据.Tables[0].Rows.Count;i++)\r\n";
            方法库 += "\t\t{\r\n";
            方法库 += 行代码;
            方法库 += "\t\t}\r\n";

            方法库 += "\t}\r\n";
        }
        private void 生成查询结果列表(int 数量, String 行格式, String 行代码,String 分隔代码)
        {
            int 位置 = 行格式.IndexOf("@行内容@");
            方法库 += "\t\tDataSet 数据=new DataSet();\r\n";
            方法库 += "\t\tSqlDataAdapter 填充=new SqlDataAdapter(语句);\r\n";
            方法库 += "\t\t填充.Fill(数据,\"表\");\r\n";
            方法库 += "\t\tfor(int i=0;i<数据.Tables[0].Rows.Count;i++)\r\n";
            方法库 += "\t\t{\r\n";
            if (行格式.IndexOf("@行内容@") < 1&&(!行格式.StartsWith("@行内容@")))
                方法库 += "\t\t\t返回值.Append(@\"" + 行格式.Replace("\"", "\"\"") + "\");\r\n";
            else
            {
                if (数量 > 1)
                    方法库 += "\t\t\tif(i%" + 数量 + "==0)\r\n";
                方法库 += "\t\t\t\t返回值.Append(@\"" + 行格式.Substring(0, 行格式.IndexOf("@行内容@")).Replace("\"", "\"\"") + "\");\r\n";
                if (数量 > 1)
                    方法库 += "\t\t\tif(i%" + 数量 + "!=0)\r\n" +
                        "\t\t\t\t返回值.Append(@\"" + 分隔代码.Replace("\"", "\"\"") + "\");\r\n";
                方法库 += 行代码;
                if (数量 > 1)
                    方法库 += "\t\t\tif(i%" + 数量 + "==" + (数量 - 1) + "||数据.Tables[0].Rows.Count==(i+1))\r\n";
                方法库 += "\t\t\t\t返回值.Append(@\"" + 行格式.Substring(行格式.LastIndexOf("@行内容@")+5).Replace("\"", "\"\"") + "\");\r\n";
            }
            方法库 += "\t\t}\r\n";
            方法库 += "\t}\r\n";
        }
        public String 生成代码项(Hashtable 代码列表, String 项代码, String 变量名称)
        {
            String 返回值 = "";
            bool 文本_代码 = true;
            String 文本 = "";
            String 代码 = "";

            Char[] 字符 = new char[1];
            int 读取数;
            StringReader 读取 = new StringReader(项代码);
            while ((读取数 = 读取.Read(字符, 0, 1)) > 0)
            {
                if (字符[0] == '@')
                {
                    if (文本_代码)
                    {
                        返回值 += @"				"+变量名称+@"+=@""" + 文本.Replace("\"", "\"\"") + @""";
";
                        文本_代码 = false;
                        文本 = "";
                        continue;
                    }
                    else
                    {
                        if (代码列表.Contains(代码))
                            返回值 += @"				"+变量名称+@"+=" + 代码列表[代码] + @";
";
                        文本_代码 = true;
                        代码 = "";
                        continue;
                    }
                }
                if (文本_代码)
                    文本 += 字符[0].ToString();
                else
                    代码 += 字符[0].ToString();
            }
            if (文本 != "")
                返回值 += @"				" + 变量名称 + @"+=@""" + 文本.Replace("\"", "\"\"") + @""";
";
            return 返回值;
        }
        public String 生成代码项(Hashtable 代码列表, String 项代码)
        {
            String 返回值 = "";
            bool 文本_代码 = true;
            String 文本 = "";
            String 代码 = "";

            Char[] 字符 = new char[1];
            int 读取数;
            StringReader 读取 = new StringReader(项代码);
            while ((读取数 = 读取.Read(字符, 0, 1)) > 0)
            {
                if (字符[0] == '@')
                {
                    if (文本_代码)
                    {
                        返回值+=@"				返回值.Append(@"""+文本.Replace("\"","\"\"")+@""");
";
                        文本_代码 = false;
                        文本 = "";
                        continue;
                    }
                    else
                    {
                        if (代码列表.Contains(代码))
                            返回值 += @"				返回值.Append(" + 代码列表[代码] + @");
";
                        文本_代码 = true;
                        代码 = "";
                        continue;
                    }
                }
                if (文本_代码)
                    文本 += 字符[0].ToString();
                else
                    代码 += 字符[0].ToString();
            }
            if (文本 != "")
                返回值 += @"				返回值.Append(@""" + 文本.Replace("\"", "\"\"") + @""");
";
            return 返回值;
        }
        private String 生成行代码(String 格式, Hashtable 必须字段, Hashtable 字段代码,ref String 返回值)
        {
            String 行代码 = "";
            bool 文本_代码 = true;
            String 文本 = "";
            String 代码 = "";

            Char[] 字符 = new char[1];
            int 读取数;
            StringReader 读取 = new StringReader(格式);
            while ((读取数 = 读取.Read(字符, 0, 1)) > 0)
            {
                if (字符[0] == '@')
                {
                    if (文本_代码)
                    {
                        行代码 += "\t\t\t返回值.Append(@\"" + 文本.Replace("\"", "\"\"") + "\");\r\n";
                        文本_代码 = false;
                        文本 = "";
                        continue;
                    }
                    else
                    {
                        if (字段代码.Contains(代码))
                            行代码 += "\t\t\t返回值.Append(" + 字段代码[代码] + ");\r\n";
                        else
                            行代码 += "\t\t\t返回值.Append(行[\"" + 代码 + "\"].ToString());\r\n";
                        String 所需字段;
                        if (必须字段.Contains(代码))
                            所需字段 = 必须字段[代码].ToString();
                        else
                            所需字段 = 代码;
                        if (所需字段 != "")
                        {
                            String[] 字段数组 = 所需字段.Split(',');
                            for (int i = 0; i < 字段数组.Length; i++)
                                if (返回值.IndexOf("[" + 字段数组[i] + "]") == -1)
                                    返回值 += ",[" + 字段数组[i] + "]";
                        }
                        文本_代码 = true;
                        代码 = "";
                        continue;
                    }
                }
                if (文本_代码)
                    文本 += 字符[0].ToString();
                else
                    代码 += 字符[0].ToString();
            }
            if (文本 != "")
                行代码 += "\t\t\t返回值.Append(@\"" + 文本.Replace("\"", "\"\"") + "\");\r\n";
            return 行代码;
        }
        public String 生成查询字段(String 格式,String 交替格式, Hashtable 必须字段,Hashtable 字段代码,out String 行代码)
        {
            必须字段.Add("标识", @"\t\t\t返回值.Append(访问.用户[""标识""].ToString());\r\n");
            String 返回值 = "[ID]";
            行代码 = "\t\t\tDataRow 行=数据.Tables[0].Rows[i];\r\n";
            if (交替格式.Trim() != "")
            {
                行代码 += "\t\t\tif(i%2==0)\r\n";
                行代码 += "\t\t\t{\r\n";
            }
            行代码 += 生成行代码(格式, 必须字段, 字段代码, ref 返回值);
            if (交替格式.Trim() != "")
            {
                行代码 += "\t\t\t}\r\n";
                行代码 += "\t\t\telse\r\n";
                行代码 += "\t\t\t{\r\n";
                行代码 += 生成行代码(交替格式, 必须字段, 字段代码, ref 返回值);
                行代码 += "\t\t\t}\r\n";
            }

            return 返回值;
        }
        public String 编译模板方法_动态文件_内容排序(String 语句名称)
        {
            String 返回值 = "";
            返回值 += "\t\t" + 语句名称 + "SQL+=\" ORDER BY \";\r\n";
            返回值 += "\t\tswitch(排序)\r\n";
            返回值 += "\t\t{\r\n";
            返回值 += "\t\t\tcase 0:\r\n";
            返回值 += "\t\t\t\t" + 语句名称 + "SQL+=\"[发布时间]\";\r\n";
            返回值 += "\t\t\t\tbreak;\r\n";
            返回值 += "\t\t\tcase 1:\r\n";
            返回值 += "\t\t\t\t" + 语句名称 + "SQL+=\"[发布时间] DESC\";\r\n";
            返回值 += "\t\t\t\tbreak;\r\n";
            返回值 += "\t\t\tcase 2:\r\n";
            返回值 += "\t\t\t\t" + 语句名称 + "SQL+=\"[点击数] DESC\";\r\n";
            返回值 += "\t\t\t\tbreak;\r\n";
            返回值 += "\t\t\tcase 3:\r\n";
            返回值 += "\t\t\t\t" + 语句名称 + "SQL+=\"[日点击数] DESC\";\r\n";
            返回值 += "\t\t\t\tbreak;\r\n";
            返回值 += "\t\t\tcase 4:\r\n";
            返回值 += "\t\t\t\t" + 语句名称 + "SQL+=\"[周点击数] DESC\";\r\n";
            返回值 += "\t\t\t\tbreak;\r\n";
            返回值 += "\t\t\tcase 5:\r\n";
            返回值 += "\t\t\t\t" + 语句名称 + "SQL+=\"[收藏数] DESC\";\r\n";
            返回值 += "\t\t\t\tbreak;\r\n";
            返回值 += "\t\t\tcase 6:\r\n";
            返回值 += "\t\t\t\t" + 语句名称 + "SQL+=\"[评论数] DESC\";\r\n";
            返回值 += "\t\t\t\tbreak;\r\n";
            返回值 += "\t\t\tcase 7:\r\n";
            返回值 += "\t\t\t\t" + 语句名称 + "SQL+=\"[最后评论时间] DESC\";\r\n";
            返回值 += "\t\t\t\tbreak;\r\n";
            返回值 += "\t\t\tcase 8:\r\n";
            返回值 += "\t\t\t\t" + 语句名称 + "SQL+=\"[最后收藏时间] DESC\";\r\n";
            返回值 += "\t\t\t\tbreak;\r\n";

            返回值 += "\t\t}\r\n";
            return 返回值;
        }
        private String 编译_CMS(String 代码)
        {
            return 编译模板标签(代码.Substring(4));
        }
        private String 编译_ASPX(String 代码)
        {
            if (代码.StartsWith("aspx="))
                return "\t\t返回值.Append(" + 代码.Substring(5) + ");\r\n";
            else
                return 代码.Substring(4);
        }
        private String 编译_CS(String 代码)
        {
            方法库 += 代码.Substring(2);
            return "";
        }
        private String 编译_UBB(String 代码)
        {
            return "\t\t返回值.Append(常用.UBB转换(@\"" + 代码.Substring(3).Replace("\"", "\"\"") + "\",访问.用户));\r\n";
        }
        private String 编译代码段(String 代码)
        {
            String 返回值 = "";
            代码 = 代码.Trim();

            if (代码.StartsWith("cms:", StringComparison.OrdinalIgnoreCase))
                返回值 = 编译_CMS(代码);
            else if (代码.StartsWith("aspx", StringComparison.OrdinalIgnoreCase))
                返回值 = 编译_ASPX(代码);
            else if (代码.StartsWith("cs", StringComparison.OrdinalIgnoreCase))
                返回值 = 编译_CS(代码);
            else if (代码.StartsWith("ubb", StringComparison.OrdinalIgnoreCase))
                返回值 = 编译_UBB(代码);

            return 返回值;
        }
        /// <summary>
        /// 编译内容、内容列表分页
        /// </summary>
        /// <param name="类型">模板的类型，值可以是Content或Club</param>
        /// <param name="分页类型">分页的类型，值可以是Page或ContentPage</param>
        /// <param name="ID">内容分页的ID</param>
        /// <param name="无分页代码">当内容不需要分页时显示的代码。</param>
        /// <returns></returns>
        public String 编译内容分页(String 类型, String 分页类型, int ID, String 无分页代码)
        {
            String 编译结果, _3G编译结果, 方法库, _3G方法库;
            if (!File.Exists(HC.Server.MapPath("~/Template/" + 类型 + "/" + this.模板名称 + "/" + 分页类型 + "/" + ID + ".xml")))
                throw new Exception("内容分页模板不存在");
            设置 设置 = new 设置(File.ReadAllText(HC.Server.MapPath("~/Template/" + 类型 + "/" + this.模板名称 + "/" + 分页类型 + "/" + ID + ".xml"), Encoding.UTF8));

            编译结果 = 设置["编译结果"].ToString();
            _3G编译结果 = 设置["3G编译结果"].ToString();
            方法库 = 设置["方法库"].ToString();
            _3G方法库 = 设置["3G方法库"].ToString();

            String 返回值 = "";
            返回值 += "\t\tif(总页数<2)\r\n";
            返回值 += "\t\t{\r\n";
            if (分页类型 == "Page")
            {
                Hashtable 属性列表 = new Hashtable();
                属性列表.Add("总记录数", "总记录数");
                返回值 += this.生成代码项(属性列表, 无分页代码);
            }
            返回值 += "\t\t}\r\n";
            if (分页类型 != "Page")
            {
                返回值 += "\t\telse if(是否余下全部==1)\r\n";
                返回值 += "\t\t{\r\n";
                Hashtable 属性列表 = new Hashtable();
                属性列表.Add("总记录数", "总记录数");
                返回值 += this.生成代码项(属性列表, 无分页代码);
                返回值 += "\t\t}\r\n";
            }
            返回值 += "\t\telse\r\n";
            返回值 += "\t\t{\r\n";
            if (this.是否WML网页)
            {
                this.方法库 += 方法库;
                返回值 += 编译结果;
            }
            else
            {
                this.方法库 += _3G方法库;
                返回值 += _3G编译结果;
            }
            返回值 += "\t\t}\r\n";
            return 返回值;
        }
    }
}