Ejemplo n.º 1
0
        /// <summary>
        /// 添加一个菜单节点,返回节点ID
        /// </summary>
        /// <param name="text">节点文字</param>
        /// <param name="url">节点链接</param>
        /// <param name="parentId">父节点ID,根目录ID为0</param>
        public bool AddNode(string text, string url, int parentId, int queue)
        {
            if (text == string.Empty)
            {
                return(false);
            }
            MR_PageInfo model = new MR_PageInfo();

            model.PName    = text;
            model.ParentID = parentId;
            model.Queue    = queue;
            if (url.Length > 0)
            {
                model.PUrl  = url;
                model.IsUrl = true;
            }
            else
            {
                model.PUrl  = string.Empty;
                model.IsUrl = false;
            }
            int result = new DR_PageInfo().Add(model);

            if (result > 0)
            {
                StaticFunctions.ClearServerCache();
                StaticFunctions.ClearClientPageCache();
                return(true);
            }
            return(false);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 从缓存中取页面ID,如果缓存不存在,会先填充
        /// </summary>
        /// <param name="pageurl"></param>
        /// <returns></returns>
        public int GetPageId(string pageurl)
        {
            pageurl = pageurl.ToLower();
            if (pageurl.IndexOf("rnd=") > 0)
            {
                pageurl = pageurl.Substring(0, pageurl.IndexOf("rnd=") - 1);
            }
            string key = "TMPPAGEINFO";

            string linkkey = key + pageurl;

            if (HttpContext.Current.Cache[linkkey] != null)
            {
                return(HttpContext.Current.Cache[linkkey].GetInt(0, false));
            }

            Dictionary <string, int> dic;

            if (HttpContext.Current.Cache[key] == null)
            {
                dic = new Dictionary <string, int>();
                IList <MR_PageInfo> pinfo = new DR_PageInfo().GetList();
                foreach (MR_PageInfo info in pinfo)
                {
                    if (!string.IsNullOrEmpty(info.PUrl))
                    {
                        if (!dic.ContainsKey(info.PUrl.ToLower()))
                        {
                            dic.Add(info.PUrl.ToLower(), info.PID);
                        }
                    }
                }
                HttpContext.Current.Cache.Insert(key, dic, null, DateTime.UtcNow.AddHours(1), TimeSpan.Zero);
            }
            else
            {
                dic = (Dictionary <string, int>)HttpContext.Current.Cache[key];
            }
            //找到库中匹配的
            IEnumerable <string> res = dic.Keys.Where(u => pageurl.StartsWith(u));
            string dbPageUrl         = string.Empty;

            //匹配中url最长的
            foreach (string tmp in res)
            {
                if (tmp.Length > dbPageUrl.Length)
                {
                    dbPageUrl = tmp;
                }
            }
            if (!string.IsNullOrEmpty(dbPageUrl))
            {
                int pageid = dic[dbPageUrl];
                HttpContext.Current.Cache.Insert(linkkey, pageid);
                return(pageid);
            }
            ;
            return(0);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 更新一个目录项
        /// </summary>
        /// <param name="text">说明文字</param>
        /// <param name="url">链接地址</param>
        /// <param name="nodeId">节点ID</param>
        public bool UpdateNode(string text, string url, int nodeId, int queue, bool defShowChild)
        {
            int result = new DR_PageInfo().Update(text, url, queue, nodeId, defShowChild);

            if (result == 0)
            {
                return(false);
            }
            return(true);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 删除一个节点,及其子节点
        /// </summary>
        /// <param name="nodeId">节点ID</param>
        public bool Delete(int nodeId)
        {
            int result = new DR_PageInfo().Delete(nodeId);

            return(result >= 1);
        }