/// <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; }
/// <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; }
/// <summary> /// 删除一个节点,及其子节点 /// </summary> /// <param name="nodeId">节点ID</param> public bool Delete(int nodeId) { int result = new DR_PageInfo().Delete(nodeId); return result >= 1; }
/// <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; }