using Newtonsoft.Json; namespace YLErp.Web { public static class MenuHelper { public static List GetMenus(string fileName) { try { var realFilePath = Server.MapPath("/App_Data/" + fileName); var menuStr = ""; if (File.Exists(realFilePath)) { menuStr = File.ReadAllText(realFilePath); } else { menuStr = File.ReadAllText(Server.MapPath("~/App_Data/" + fileName)); } var menus = JsonConvert.DeserializeObject>(menuStr); var seq = 0; PreProcessMenus(menus, 0, ref seq); return menus; } catch (Exception exp) { LogFactory.GetLogger().Error(exp); return new List(); } } private static void PreProcessMenus(List items, int level, ref int seq) { if (items == null) { return; } foreach (var item in items) { seq++; item.Level = level; if (string.IsNullOrEmpty(item.Icon)) { item.Icon = "fa fa-caret-right"; } var url = item.Url; if (string.IsNullOrWhiteSpace(url) || url.StartsWith("#")) { url = string.Empty; } else if (url.StartsWith("http:")) { } else if (!url.StartsWith("/")) { url = "/" + item.Url; } item.Url = url; item.Id = seq.ToString(); PreProcessMenus(item.SubItems, level + 1, ref seq); } } } }