1

ビューにレンダリングするコントローラーで動的メニューを作成しようとしています。私が見つけたのは、 Controls.Add がリストからアイテムを削除していて、最終的なアイテムのみを表示することです。リスト内のすべてのアイテムが確実に表示されるようにするにはどうすればよいですか? また、動的メニューを作成しているため、子要素の表示を終了するにはどうすればよいですか?

public string CreateDynamicMenu()   
        {
            HtmlGenericControl navbar = new HtmlGenericControl("nav");
            navbar.Attributes.Add("class", "navbar navbar-default");
            HtmlGenericControl containerDiv = new HtmlGenericControl("div");
            containerDiv.Attributes.Add("class", "container-fluid");
            HtmlGenericControl collapseDiv = new HtmlGenericControl("div");
            collapseDiv.Attributes.Add("class", "collapse navbar-collapse");
            HtmlGenericControl navUl = new HtmlGenericControl("ul");
            navUl.Attributes.Add("class", "nav navbar-nav");
            HtmlGenericControl dropdownLi = new HtmlGenericControl("li");
            dropdownLi.Attributes.Add("class", "dropdown");
            HtmlGenericControl mainMenuA = new HtmlGenericControl("a");


            var myMenu = menuListForUserG.GetMenus(Global.CurrentProfile.UserID).OrderBy(x => x.MenuOrder).ThenBy(y => y.MenuName);
            var navbarmenu = myMenu.Where(x => x.ParentID == null);

            foreach (var item in navbarmenu)
            {    
                mainMenuA.InnerText = item.MenuName;
                dropdownLi.Controls.Add(mainMenuA);
                navUl.Controls.Add(dropdownLi);                    
            }  

            collapseDiv.Controls.Add(navUl);
            containerDiv.Controls.Add(collapseDiv);
            navbar.Controls.Add(containerDiv);    

            StringBuilder htmlStringBuilder = new StringBuilder();
            HtmlTextWriter htmlStringWriter = new HtmlTextWriter(new StringWriter(htmlStringBuilder));
            navbar.RenderControl(htmlStringWriter);
            String output = htmlStringBuilder.ToString();
            return output; }
4

1 に答える 1