using Microsoft.AspNetCore.Html; using System.Text; namespace YLErp.Web { public class MenuRender : BasicViewModel { public MenuRender(UserInfo userInfo) : base(userInfo) { } public IHtmlContent ShowMenu(IHtmlHelper helper, List menus) { var currentMenu = Array.Empty(); if (helper.ViewBag.Menu != null) { currentMenu = helper.ViewBag.Menu.ToString().Split('-'); } var sb = new StringBuilder(); foreach (var item in menus) { RentItemV2(sb, item, currentMenu); } return new HtmlString(sb.ToString()); } private void RentItemV2(StringBuilder sb, MenuItem item, string[] currentMenu) { if (!string.IsNullOrEmpty(item.Rights[0]) && !CurUser.HasRight(item.Rights[0])) { return; } var css = string.Empty; if (currentMenu.Length > item.Level) { if (currentMenu[item.Level] == item.Name) { css = item.SubItems != null ? "active-page open" : "active"; } } sb.Append(""); if (item.SubItems != null) { sb.AppendFormat(@" {1} ", item.Icon, item.Name).AppendLine(); foreach (var subitem in item.SubItems) { RentItemV2(sb, subitem, currentMenu); } sb.AppendLine(""); } else { var target = item.Target.TrimToNull(); if (target == null && (item.Url.StartsWith("http:") || item.Url.StartsWith("/RiskHedging/Index2", StringComparison.OrdinalIgnoreCase))) { target = " target='_blank' "; } sb.AppendFormat(@"{2}", item.Url, target, item.Name).AppendLine(); } sb.AppendLine(""); } } }