/// <summary>
        /// 复杂查询操作
        /// </summary>
        protected void QueryRecord()
        {
            HttpContext context = HttpContext.Current;
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;

            string pageSize = request.Params["pageSize"];
            string pageIndex = request.Params["pageIndex"];

            string beginAddTime = request.Params["textBeginAddTime"];
            string endAddTime = request.Params["textEndAddTime"];
            string isSuccessId = request.Params["textIsSuccessId"];
            string operationTable = request.Params["textOperationTable"];
            string operationTypeCode = request.Params["selectOperationTypeCode"];
            string resultCode = request.Params["textResultCode"];
            string systemUserName = request.Params["textSystemUserName"];

            CriterionAndOrder operationLogCriterionAndOrder = new CriterionAndOrder();
            operationLogCriterionAndOrder.CriteriaName = typeof(OperationLog).FullName;
            operationLogCriterionAndOrder.CriteriaAsName = "OL";
            operationLogCriterionAndOrder.OrderList.Add(new Order("OL.AddTime", false));

            CriterionAndOrder conLogCriterionAndOrder = new CriterionAndOrder();
            conLogCriterionAndOrder.CriteriaName = "ConLogRef";
            conLogCriterionAndOrder.CriteriaAsName = "CL";
            conLogCriterionAndOrder.CriteriaSpecification = CriteriaSpecification.LeftJoin;

            CriterionAndOrder systemUserCriterionAndOrder = new CriterionAndOrder();
            systemUserCriterionAndOrder.CriteriaName = "SystemUserRef";
            systemUserCriterionAndOrder.CriteriaAsName = "SU";
            systemUserCriterionAndOrder.CriteriaSpecification = CriteriaSpecification.LeftJoin;

            if (!String.IsNullOrEmpty(beginAddTime))
                operationLogCriterionAndOrder.CriterionList.Add(Restrictions.Gt("OL.AddTime", Convert.ToDateTime(beginAddTime)));
            if (!String.IsNullOrEmpty(endAddTime))
                operationLogCriterionAndOrder.CriterionList.Add(Restrictions.Lt("OL.AddTime", Convert.ToDateTime(endAddTime)));
            if (!String.IsNullOrEmpty(isSuccessId))
                operationLogCriterionAndOrder.CriterionList.Add(Restrictions.Eq("OL.IsSuccessId", isSuccessId));
            if (!String.IsNullOrEmpty(operationTable))
                operationLogCriterionAndOrder.CriterionList.Add(Restrictions.Like("OL.OperationTable", "%" + operationTable + "%"));
            if (!String.IsNullOrEmpty(operationTypeCode))
                operationLogCriterionAndOrder.CriterionList.Add(Restrictions.Eq("OL.OperationTypeCode", operationTypeCode));
            if (!String.IsNullOrEmpty(resultCode))
                operationLogCriterionAndOrder.CriterionList.Add(Restrictions.Eq("OL.ResultCode", Convert.ToInt32(resultCode)));
            if (!String.IsNullOrEmpty(systemUserName))
                operationLogCriterionAndOrder.CriterionList.Add(Restrictions.Like("OL.SystemUserId", "%" + systemUserName + "%"));

            ProjectionList pList = Projections.ProjectionList();
            pList.Add(Projections.Property("OL.LogId").As("PrimaryKey"));
            pList.Add(Projections.Property("OL.AddTime").As("AddTime"));
            pList.Add(Projections.Property("OL.IsSuccessText").As("IsSuccessText"));
            pList.Add(Projections.Property("OL.LogId").As("LogId"));
            pList.Add(Projections.Property("OL.ObjectRecordId").As("ObjectRecordId"));
            pList.Add(Projections.Property("OL.OperationContent").As("OperationContent"));
            pList.Add(Projections.Property("OL.OperationTable").As("OperationTable"));
            pList.Add(Projections.Property("OL.OperationTypeText").As("OperationTypeText"));
            pList.Add(Projections.Property("OL.ResultText").As("ResultText"));
            pList.Add(Projections.Property("SU.UserId").As("SystemUserId"));
            pList.Add(Projections.Property("SU.UserName").As("SystemUserName"));

            QueryTerms queryTerms = new QueryTerms();
            queryTerms.PersistentClass = typeof(OperationLog);
            queryTerms.ColumnList = pList;
            queryTerms.CriterionAndOrderList.Add(operationLogCriterionAndOrder);
            queryTerms.CriterionAndOrderList.Add(conLogCriterionAndOrder);
            queryTerms.CriterionAndOrderList.Add(systemUserCriterionAndOrder);
            queryTerms.PageSize = Convert.ToInt32(pageSize);
            queryTerms.PageIndex = Convert.ToInt32(pageIndex) - 1;

            ResultModel result = OperationLogBll.GetOperationLogList(queryTerms);

            string jsonString = JsonConvert.SerializeObject(result, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore,
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });

            response.Write(jsonString);
        }
        /// <summary>
        /// 复杂查询操作
        /// </summary>
        protected void QueryRecord()
        {
            HttpContext context = HttpContext.Current;
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;

            string pageSize = request.Params["pageSize"];
            string pageIndex = request.Params["pageIndex"];

            string addTime = request.Params["textAddTime"];
            string description = request.Params["textDescription"];
            string id = request.Params["textId"];
            string name = request.Params["textName"];
            string updateTime = request.Params["textUpdateTime"];
            //keywords是处理AutoComplete下接框查询时设置的传入参数
            string keywords = request.Params["keywords"];

            CriterionAndOrder dictionaryTypeCriterionAndOrder = new CriterionAndOrder();
            dictionaryTypeCriterionAndOrder.CriteriaName = typeof(DictionaryType).FullName;
            dictionaryTypeCriterionAndOrder.CriteriaAsName = "DT";
            dictionaryTypeCriterionAndOrder.OrderList.Add(new Order("DT.AddTime", false));

            if (!String.IsNullOrEmpty(addTime))
                dictionaryTypeCriterionAndOrder.CriterionList.Add(Restrictions.Gt("DT.AddTime", Convert.ToDateTime(addTime)));
            if (!String.IsNullOrEmpty(description))
                dictionaryTypeCriterionAndOrder.CriterionList.Add(Restrictions.Like("DT.Description", "%" + description + "%"));
            if (!String.IsNullOrEmpty(keywords))
                dictionaryTypeCriterionAndOrder.CriterionList.Add(Restrictions.Like("DT.Description", "%" + keywords + "%"));
            if (!String.IsNullOrEmpty(id))
                dictionaryTypeCriterionAndOrder.CriterionList.Add(Restrictions.Eq("DT.Id", id));
            if (!String.IsNullOrEmpty(name))
                dictionaryTypeCriterionAndOrder.CriterionList.Add(Restrictions.Like("DT.Name", "%" + name + "%"));
            if (!String.IsNullOrEmpty(updateTime))
                dictionaryTypeCriterionAndOrder.CriterionList.Add(Restrictions.Gt("DT.UpdateTime", Convert.ToDateTime(updateTime)));

            ProjectionList pList = Projections.ProjectionList();
            pList.Add(Projections.Property("DT.Id").As("PrimaryKey"));
            pList.Add(Projections.Property("DT.AddTime").As("AddTime"));
            pList.Add(Projections.Property("DT.Description").As("Description"));
            pList.Add(Projections.Property("DT.Id").As("Id"));
            pList.Add(Projections.Property("DT.Name").As("Name"));
            pList.Add(Projections.Property("DT.UpdateTime").As("UpdateTime"));

            QueryTerms queryTerms = new QueryTerms();
            queryTerms.PersistentClass = typeof(DictionaryType);
            queryTerms.ColumnList = pList;
            queryTerms.CriterionAndOrderList.Add(dictionaryTypeCriterionAndOrder);
            queryTerms.PageSize = Convert.ToInt32(pageSize);
            queryTerms.PageIndex = Convert.ToInt32(pageIndex) - 1;

            ResultModel result = DictionaryTypeBll.GetDictionaryTypeList(queryTerms);

            string jsonString = JsonConvert.SerializeObject(result, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore,
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });

            response.Write(jsonString);
        }
        /// <summary>
        /// 复杂查询操作
        /// </summary>
        protected void QueryRecord()
        {
            HttpContext context = HttpContext.Current;
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;

            string pageSize = request.Params["pageSize"];
            string pageIndex = request.Params["pageIndex"];

            string addTime = request.Params["textAddTime"];
            string code = request.Params["textCode"];
            string description = request.Params["textDescription"];
            string id = request.Params["textId"];
            string name = request.Params["textName"];
            string typeName = request.Params["textTypeName"];
            string updateTime = request.Params["textUpdateTime"];
            string typeId = request.Params["textTypeId"];

            CriterionAndOrder dictionaryCriterionAndOrder = new CriterionAndOrder();
            dictionaryCriterionAndOrder.CriteriaName = typeof(Dictionary).FullName;
            dictionaryCriterionAndOrder.CriteriaAsName = "D";
            dictionaryCriterionAndOrder.OrderList.Add(new Order("D.TypeId", true));
            dictionaryCriterionAndOrder.OrderList.Add(new Order("D.Code", true));

            CriterionAndOrder dictionaryTypeCriterionAndOrder = new CriterionAndOrder();
            dictionaryTypeCriterionAndOrder.CriteriaName = "TypeRef";
            dictionaryTypeCriterionAndOrder.CriteriaAsName = "DT";
            dictionaryTypeCriterionAndOrder.CriteriaSpecification = CriteriaSpecification.LeftJoin;

            if (!String.IsNullOrEmpty(addTime))
                dictionaryCriterionAndOrder.CriterionList.Add(Restrictions.Gt("D.AddTime", Convert.ToDateTime(addTime)));
            if (!String.IsNullOrEmpty(code))
                dictionaryCriterionAndOrder.CriterionList.Add(Restrictions.Eq("D.Code", Convert.ToChar(code)));
            if (!String.IsNullOrEmpty(description))
                dictionaryCriterionAndOrder.CriterionList.Add(Restrictions.Like("D.Description", "%" + description + "%"));
            if (!String.IsNullOrEmpty(id))
                dictionaryCriterionAndOrder.CriterionList.Add(Restrictions.Eq("D.Id", id));
            if (!String.IsNullOrEmpty(name))
                dictionaryCriterionAndOrder.CriterionList.Add(Restrictions.Like("D.Name", "%" + name + "%"));
            if (!String.IsNullOrEmpty(typeId))
                dictionaryCriterionAndOrder.CriterionList.Add(Restrictions.Eq("D.TypeId", typeId));
            if (!String.IsNullOrEmpty(typeName))
                dictionaryCriterionAndOrder.CriterionList.Add(Restrictions.Like("DT.Name", "%" + typeName + "%"));
            if (!String.IsNullOrEmpty(updateTime))
                dictionaryCriterionAndOrder.CriterionList.Add(Restrictions.Gt("D.UpdateTime", Convert.ToDateTime(updateTime)));

            ProjectionList pList = Projections.ProjectionList();
            pList.Add(Projections.Property("D.Id").As("PrimaryKey"));
            pList.Add(Projections.Property("D.AddTime").As("AddTime"));
            pList.Add(Projections.Property("D.Code").As("Code"));
            pList.Add(Projections.Property("D.Description").As("Description"));
            pList.Add(Projections.Property("D.Id").As("Id"));
            pList.Add(Projections.Property("D.Name").As("Name"));
            pList.Add(Projections.Property("DT.Id").As("TypeId"));
            pList.Add(Projections.Property("DT.Name").As("TypeName"));
            pList.Add(Projections.Property("D.UpdateTime").As("UpdateTime"));

            QueryTerms queryTerms = new QueryTerms();
            queryTerms.PersistentClass = typeof(Dictionary);
            queryTerms.ColumnList = pList;
            queryTerms.CriterionAndOrderList.Add(dictionaryCriterionAndOrder);
            queryTerms.CriterionAndOrderList.Add(dictionaryTypeCriterionAndOrder);
            queryTerms.PageSize = Convert.ToInt32(pageSize);
            queryTerms.PageIndex = Convert.ToInt32(pageIndex) - 1;

            ResultModel result = DictionaryBll.GetDictionaryList(queryTerms);

            string jsonString = JsonConvert.SerializeObject(result, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore,
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });

            response.Write(jsonString);
        }
        /// <summary>
        /// 复杂查询操作
        /// </summary>
        protected void QueryRecord()
        {
            HttpContext context = HttpContext.Current;
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;

            string pageSize = request.Params["pageSize"];
            string pageIndex = request.Params["pageIndex"];

            string addTime = request.Params["textAddTime"];
            string description = request.Params["textDescription"];
            string isPublic = request.Params["textIsPublic"];
            string moduleId = request.Params["textModuleId"];
            string moduleLevelId = request.Params["selectModuleLevelId"];
            string moduleName = request.Params["textModuleName"];
            string parentModuleId = request.Params["selectParentModuleId"];
            string sortFieldId = request.Params["textSortFieldId"];
            string order = request.Params["order"];

            CriterionAndOrder moduleCriterionAndOrder = new CriterionAndOrder();
            moduleCriterionAndOrder.CriteriaName = typeof(FunctionModule).FullName;
            moduleCriterionAndOrder.CriteriaAsName = "FM";

            if (!String.IsNullOrEmpty(order))
                moduleCriterionAndOrder.OrderList.Add(new Order(order, false));
            else
                moduleCriterionAndOrder.OrderList.Add(new Order("FM.SortFieldId", true));

            CriterionAndOrder parentModuleCriterionAndOrder = new CriterionAndOrder();
            parentModuleCriterionAndOrder.CriteriaName = "ParentModuleRef";
            parentModuleCriterionAndOrder.CriteriaAsName = "PF";
            parentModuleCriterionAndOrder.CriteriaSpecification = CriteriaSpecification.LeftJoin;
            parentModuleCriterionAndOrder.OrderList.Add(new Order("PF.SortFieldId", true));

            if (!String.IsNullOrEmpty(addTime))
                moduleCriterionAndOrder.CriterionList.Add(Restrictions.Eq("FM.AddTime", addTime));
            if (!String.IsNullOrEmpty(description))
                moduleCriterionAndOrder.CriterionList.Add(Restrictions.Eq("FM.Description", description));
            if (!String.IsNullOrEmpty(isPublic))
                moduleCriterionAndOrder.CriterionList.Add(Restrictions.Eq("FM.IsPublicId", isPublic));
            if (!String.IsNullOrEmpty(moduleId))
                moduleCriterionAndOrder.CriterionList.Add(Restrictions.Eq("FM.ModuleId", moduleId));
            if (!String.IsNullOrEmpty(moduleLevelId))
                moduleCriterionAndOrder.CriterionList.Add(Restrictions.Eq("FM.ModuleLevelId", Convert.ToInt32(moduleLevelId)));
            if (!String.IsNullOrEmpty(moduleName))
                moduleCriterionAndOrder.CriterionList.Add(Restrictions.Like("FM.ModuleName", "%" + moduleName + "%"));
            if (!String.IsNullOrEmpty(parentModuleId))
                moduleCriterionAndOrder.CriterionList.Add(Restrictions.Eq("FM.ParentModuleId", parentModuleId));
            if (!String.IsNullOrEmpty(sortFieldId))
                moduleCriterionAndOrder.CriterionList.Add(Restrictions.Eq("FM.SortFieldId", sortFieldId));

            ProjectionList pList = Projections.ProjectionList();
            pList.Add(Projections.Property("FM.ModuleId").As("ModuleId"));
            pList.Add(Projections.Property("FM.ModuleId").As("PrimaryKey"));
            pList.Add(Projections.Property("FM.ModuleName").As("ModuleName"));
            pList.Add(Projections.Property("FM.UpdateTime").As("UpdateTime"));
            pList.Add(Projections.Property("FM.AddTime").As("AddTime"));
            pList.Add(Projections.Property("FM.ModuleLevelId").As("ModuleLevelId"));
            pList.Add(Projections.Property("FM.ModuleLevelName").As("ModuleLevelName"));
            pList.Add(Projections.Property("PF.ModuleId").As("ParentModuleId"));
            pList.Add(Projections.Property("PF.ModuleName").As("ParentModuleName"));
            pList.Add(Projections.Property("FM.SortFieldId").As("SortFieldId"));
            pList.Add(Projections.Property("FM.SortFieldName").As("SortFieldName"));
            pList.Add(Projections.Property("FM.IsPublicId").As("IsPublicId"));
            pList.Add(Projections.Property("FM.IsPublicName").As("IsPublicName"));

            QueryTerms queryTerms = new QueryTerms();
            queryTerms.PersistentClass = typeof(FunctionModule);
            queryTerms.ColumnList = pList;
            queryTerms.CriterionAndOrderList.Add(moduleCriterionAndOrder);
            queryTerms.CriterionAndOrderList.Add(parentModuleCriterionAndOrder);

            queryTerms.PageSize = Convert.ToInt32(pageSize);
            queryTerms.PageIndex = Convert.ToInt32(pageIndex) - 1;

            ResultModel result = FunctionModuleBll.GetFunctionModuleList(queryTerms);

            string jsonString = JsonConvert.SerializeObject(result, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore,
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });

            response.Write(jsonString);
        }
        /// <summary>
        /// 根据角色查询相应功能模块
        /// </summary>
        protected void GetModuleListByRole()
        {
            HttpContext context = HttpContext.Current;
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;

            string roleId= request.Params["roleId"];

            CriterionAndOrder moduleCriterionAndOrder = new CriterionAndOrder();
            moduleCriterionAndOrder.CriteriaName = typeof(FunctionModule).FullName;
            moduleCriterionAndOrder.CriteriaAsName = "FE";

            CriterionAndOrder roleCriterionAndOrder = new CriterionAndOrder();
            roleCriterionAndOrder.CriteriaName = "Role";
            roleCriterionAndOrder.CriteriaAsName = "RO";
            roleCriterionAndOrder.CriteriaSpecification = CriteriaSpecification.InnerJoin;

            if (!String.IsNullOrEmpty(roleId))
                moduleCriterionAndOrder.CriterionList.Add(Restrictions.Eq("RO.RoleId", roleId));

            ProjectionList pList = Projections.ProjectionList();
            pList.Add(Projections.Property("FE.ModuleId").As("ModuleId"));

            QueryTerms queryTerms = new QueryTerms();
            queryTerms.PersistentClass = typeof(FunctionModule);
            queryTerms.ColumnList = pList;
            queryTerms.CriterionAndOrderList.Add(moduleCriterionAndOrder);
            queryTerms.CriterionAndOrderList.Add(roleCriterionAndOrder);

            ResultModel result = FunctionModuleBll.GetFunctionModuleList(queryTerms);

            string jsonString = JsonConvert.SerializeObject(result, new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });

            response.Write(jsonString);
        }
        /// <summary>
        /// 复杂查询操作
        /// </summary>
        protected void QueryRecord()
        {
            HttpContext contenxt = HttpContext.Current;
            HttpRequest request = contenxt.Request;
            HttpResponse response = contenxt.Response;

            string pageSize = request.Params["pageSize"];
            string pageIndex = request.Params["pageIndex"];
            string userName = request.Params["textUserName"];
            string beginAddTime = request.Params["textBeginAddTime"];
            string endAddTime = request.Params["textEndAddTime"];
            string onlineFlagId = request.Params["selectOnlineFlag"];

            CriterionAndOrder systemUserCriterionAndOrder = new CriterionAndOrder();
            systemUserCriterionAndOrder.CriteriaName = typeof(SystemUser).FullName;
            systemUserCriterionAndOrder.CriteriaAsName = "SU";
            systemUserCriterionAndOrder.OrderList.Add(new Order("SU.AddTime", false));

            if (!String.IsNullOrEmpty(userName))
                systemUserCriterionAndOrder.CriterionList.Add(Restrictions.Like("SU.UserName", "%" + userName + "%"));
            if (!String.IsNullOrEmpty(beginAddTime))
                systemUserCriterionAndOrder.CriterionList.Add(Restrictions.Gt("SU.AddTime", Convert.ToDateTime(beginAddTime)));
            if (!String.IsNullOrEmpty(endAddTime))
                systemUserCriterionAndOrder.CriterionList.Add(Restrictions.Lt("SU.AddTime", Convert.ToDateTime(endAddTime)));
            if (!String.IsNullOrEmpty(onlineFlagId))
                systemUserCriterionAndOrder.CriterionList.Add(Restrictions.Eq("SU.OnlineFlagId", Convert.ToChar(onlineFlagId)));

            ProjectionList pList = Projections.ProjectionList();
            pList.Add(Projections.Property("SU.GenderName").As("GenderName"));
            pList.Add(Projections.Property("SU.OnlineFlagName").As("OnlineFlagName"));
            pList.Add(Projections.Property("SU.UserId").As("UserId"));
            pList.Add(Projections.Property("SU.UserId").As("PrimaryKey"));
            pList.Add(Projections.Property("SU.UserName").As("UserName"));
            pList.Add(Projections.Property("SU.RealName").As("RealName"));
            pList.Add(Projections.Property("SU.NickName").As("NickName"));
            pList.Add(Projections.Property("SU.AddTime").As("AddTime"));

            QueryTerms queryTerms = new QueryTerms();
            queryTerms.PersistentClass = typeof(SystemUser);
            queryTerms.ColumnList = pList;
            queryTerms.CriterionAndOrderList.Add(systemUserCriterionAndOrder);

            queryTerms.PageSize = Convert.ToInt32(pageSize);
            queryTerms.PageIndex = Convert.ToInt32(pageIndex) - 1;

            ResultModel result = SystemUserBll.GetSystemUserList(queryTerms);

            string jsonString = JsonConvert.SerializeObject(result, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore,
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });

            response.Write(jsonString);
        }
        /// <summary>
        /// 复杂查询操作
        /// </summary>
        protected void QueryRecord()
        {
            HttpContext context = HttpContext.Current;
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;

            string pageSize = request.Params["pageSize"];
            string pageIndex = request.Params["pageIndex"];

            string addTime = request.Params["textAddTime"];
            string description = request.Params["textDescription"];
            string functionModule = request.Params["textFunctionModule"];
            string menuId = request.Params["textMenuId"];
            string menuName = request.Params["textMenuName"];
            string webPageId = request.Params["textWebPageId"];
            string url = request.Params["textUrl"];
            string moduleLevel = request.Params["selectModuleLevelId"];
            string parentModule = request.Params["selectParentModuleId"];

            CriterionAndOrder linkMenuCriterionAndOrder = new CriterionAndOrder();
            linkMenuCriterionAndOrder.CriteriaName = typeof(LinkMenu).FullName;
            linkMenuCriterionAndOrder.CriteriaAsName = "LM";

            CriterionAndOrder webPageCriterionAndOrder = new CriterionAndOrder();
            webPageCriterionAndOrder.CriteriaName = "WebPageRef";
            webPageCriterionAndOrder.CriteriaAsName = "WP";
            webPageCriterionAndOrder.CriteriaSpecification = CriteriaSpecification.LeftJoin;

            CriterionAndOrder functionModuleCriterionAndOrder = new CriterionAndOrder();
            functionModuleCriterionAndOrder.CriteriaName = "FunctionModuleRef";
            functionModuleCriterionAndOrder.CriteriaAsName = "FM";
            functionModuleCriterionAndOrder.CriteriaSpecification = CriteriaSpecification.LeftJoin;

            if (!String.IsNullOrEmpty(addTime))
                linkMenuCriterionAndOrder.CriterionList.Add(Restrictions.Eq("LM.AddTime", Convert.ToDateTime(addTime)));
            if (!String.IsNullOrEmpty(description))
                linkMenuCriterionAndOrder.CriterionList.Add(Restrictions.Eq("LM.Description", description));
            if (!String.IsNullOrEmpty(functionModule))
                linkMenuCriterionAndOrder.CriterionList.Add(Restrictions.Eq("LM.FunctionModule", functionModule));
            if (!String.IsNullOrEmpty(menuId))
                linkMenuCriterionAndOrder.CriterionList.Add(Restrictions.Eq("LM.MenuId", menuId));
            if (!String.IsNullOrEmpty(menuName))
                linkMenuCriterionAndOrder.CriterionList.Add(Restrictions.Like("LM.MenuName", "%" + menuName + "%"));
            if (!String.IsNullOrEmpty(webPageId))
                webPageCriterionAndOrder.CriterionList.Add(Restrictions.Eq("WP.WebPageId", webPageId));
            if (!String.IsNullOrEmpty(url))
                webPageCriterionAndOrder.CriterionList.Add(Restrictions.Like("WP.Url", "%" + url + "%"));
            if (!String.IsNullOrEmpty(moduleLevel))
                functionModuleCriterionAndOrder.CriterionList.Add(Restrictions.Eq("FM.ModuleLevelId", Convert.ToInt32(moduleLevel)));
            if (!String.IsNullOrEmpty(parentModule))
                functionModuleCriterionAndOrder.CriterionList.Add(Restrictions.Eq("FM.ParentModuleId", parentModule));

            ProjectionList pList = Projections.ProjectionList();
            pList.Add(Projections.Property("LM.MenuId").As("PrimaryKey"));
            pList.Add(Projections.Property("LM.MenuId").As("MenuId"));
            pList.Add(Projections.Property("LM.MenuName").As("MenuName"));
            pList.Add(Projections.Property("LM.AddTime").As("AddTime"));
            pList.Add(Projections.Property("FM.ModuleId").As("FunctionModuleId"));
            pList.Add(Projections.Property("FM.ModuleName").As("FunctionModuleName"));
            pList.Add(Projections.Property("WP.PageId").As("WebPageId"));
            pList.Add(Projections.Property("WP.Url").As("WebPageUrl"));

            functionModuleCriterionAndOrder.OrderList.Add(new Order("FM.ModuleLevelId", true));
            functionModuleCriterionAndOrder.OrderList.Add(new Order("FM.ParentModuleId", true));
            functionModuleCriterionAndOrder.OrderList.Add(new Order("FM.SortFieldId", true));

            QueryTerms queryTerms = new QueryTerms();
            queryTerms.PersistentClass = typeof(LinkMenu);
            queryTerms.ColumnList = pList;
            queryTerms.CriterionAndOrderList.Add(linkMenuCriterionAndOrder);
            queryTerms.CriterionAndOrderList.Add(webPageCriterionAndOrder);
            queryTerms.CriterionAndOrderList.Add(functionModuleCriterionAndOrder);
            queryTerms.PageSize = Convert.ToInt32(pageSize);
            queryTerms.PageIndex = Convert.ToInt32(pageIndex) - 1;

            ResultModel result = LinkMenuBll.GetLinkMenuList(queryTerms);

            string jsonString = JsonConvert.SerializeObject(result, new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            });

            response.Write(jsonString);
        }