static private void InitSiteNode(XmlNode siteNode) { foreach (XmlNode subNode in siteNode.ChildNodes) { if (subNode.Name != "siteMapNode") { continue; //只处理siteMapNode结点 } string url = MyXml.GetAttributeValue(subNode, "url"); string urlflag = ParsePageFlag(url); MyXml.AddAttribute(subNode, "pageflag", urlflag); InitSiteNode(subNode); //不同子菜单项进行特殊处理 string title = MyXml.GetAttributeValue(subNode, "title"); switch (title) { default: break; } } }
/// <summary> /// 设置页面模块信息 /// 本函数提供通用计算方式 /// 若有特殊情况,需要更改菜单项索信息,可在相关页面中进行重载 /// </summary> protected virtual void InitModuleInfo() { string typeName = this.GetType().FullName; if (!AppInfo.htModuleInfo.Contains(typeName)) { #region 检查对应的节点 string strUrl = Request.Url.ToString(); string urlflag0 = AppInfo.ParsePageFlag(strUrl); XmlNode rootNode = AppInfo.xmlSiteMap.SelectSingleNode("siteMap"); string urlflag1 = ""; int idx1 = 0; int idx2 = -1; int idx3 = -1; for (int i = 0; i < rootNode.ChildNodes.Count; i++) { for (int j = 0; j < rootNode.ChildNodes[i].ChildNodes.Count; j++) { XmlNode node1 = rootNode.ChildNodes[i].ChildNodes[j]; urlflag1 = MyXml.GetAttributeValue(node1, "pageflag"); if (urlflag1 == urlflag0) { idx1 = i; idx2 = j; break; } for (int k = 0; k < rootNode.ChildNodes[i].ChildNodes[j].ChildNodes.Count; k++) { XmlNode node2 = node1.ChildNodes[k]; urlflag1 = MyXml.GetAttributeValue(node2, "pageflag"); if (urlflag1 == urlflag0) { idx1 = i; idx2 = j; idx3 = k; break; } } } } XmlNode mNode = rootNode.ChildNodes[idx1]; if (idx2 > -1) { mNode = mNode.ChildNodes[idx2]; } if (idx3 > -1) { mNode = mNode.ChildNodes[idx3]; } #endregion #region 从结点中解析模块信息 ModuleInfo m = new ModuleInfo(); m.PageFlag = urlflag0; m.ModuleName = MyXml.GetAttributeValue(mNode, "title"); m.ModuleDesc = MyXml.GetAttributeValue(mNode, "description"); m.idxMenu1 = idx1; m.idxMenu2 = idx2; m.idxMenu3 = (idx3 > -1) ? 0 : -1; AppInfo.htModuleInfo.Add(typeName, m); #endregion } this.mModuleInfo = (ModuleInfo)AppInfo.htModuleInfo[typeName]; }