public static MvcHtmlString ListarMenu(this HtmlHelper helper, IEnumerable <MenuOpcion> opciones)
        {
            var           urlhelper = new UrlHelper(helper.ViewContext.RequestContext);
            StringBuilder html_prin = new StringBuilder();

            if (opciones == null)
            {
                return(new MvcHtmlString(""));
            }

            foreach (var opcion in opciones.OrderBy(x => x.NombreMenu))
            {
                var classIsSelected = helper.IsSelected(opcion.ControllerName, null, null);
                var data_i18n       = string.IsNullOrEmpty(opcion.ControllerName) ? string.Empty : "data-i18n=\"nav." + opcion.ControllerName.ToLower() + "\"";

                var tag_li_prin = new TagBuilder("li");

                if (classIsSelected != "")
                {
                    tag_li_prin.AddCssClass(classIsSelected);
                }

                //creando enlace principal
                var tag_lnk_prin = new TagBuilder("a");

                var urlgenerate = MenuHtmlHelpers.GenerateUrl(new UrlHelper(helper.ViewContext.RequestContext), opcion.ControllerName, opcion.ActionName, opcion.AttributesRoute);
                tag_lnk_prin.MergeAttribute("href", urlgenerate);

                //creando texto relleno
                StringBuilder str_lnk_innerht = new StringBuilder();
                str_lnk_innerht.AppendLine("<span class=\"icon\"><i class=\"fa " + opcion.IconoMenu + "\"></i></span>");
                str_lnk_innerht.AppendLine("<span class=\"nav-label\" " + data_i18n + ">" + opcion.NombreMenu + "</span>");
                str_lnk_innerht.AppendLine("<span class=\"fa arrow\"></span>");

                tag_lnk_prin.InnerHtml = str_lnk_innerht.ToString();


                //integrando todos los tags
                tag_li_prin.InnerHtml = tag_lnk_prin.ToString();
                if (opcion.MenuItem.Any())
                {
                    tag_li_prin.InnerHtml += MenuHtmlHelpers.ConstruirItems(helper, opcion.MenuItem, opcion.Nivel);
                }
                html_prin.AppendLine(tag_li_prin.ToString());
            }



            return(new MvcHtmlString(html_prin.ToString()));
        }
        private static string ConstruirItems(HtmlHelper helper, IEnumerable <MenuOpcion> opciones, int level)
        {
            //contruir el primer ul
            TagBuilder tag_ul_second = new TagBuilder("ul");


            //
            StringBuilder item_second = new StringBuilder();

            foreach (var opcion in opciones.OrderBy(x => x.Secuencia))
            {
                var classIsSelectedLi = helper.IsSelected(null, opcion.ActionName, null);
                var classIsSelectedUL = helper.IsSelected(opcion.ControllerName, null, "in");

                TagBuilder tag_li_second  = new TagBuilder("li");
                TagBuilder tag_lnk_second = new TagBuilder("a");


                tag_lnk_second.SetInnerText(opcion.NombreMenu);
                if (opcion.TipoMenu == "I")
                {
                    var urlgenerate = MenuHtmlHelpers.GenerateUrl(new UrlHelper(helper.ViewContext.RequestContext), opcion.ControllerName, opcion.ActionName, opcion.AttributesRoute);
                    tag_lnk_second.MergeAttribute("href", urlgenerate);

                    if (classIsSelectedLi != "")
                    {
                        tag_li_second.AddCssClass(classIsSelectedLi);
                    }
                }

                tag_li_second.InnerHtml = tag_lnk_second.ToString();
                if (opcion.MenuItem.Any())
                {
                    tag_li_second.InnerHtml += MenuHtmlHelpers.ConstruirItems(helper, opcion.MenuItem, opcion.Nivel);
                }
                item_second.AppendLine(tag_li_second.ToString());

                if (classIsSelectedUL != "")
                {
                    tag_ul_second.MergeAttribute("class", classIsSelectedUL, true);
                    tag_ul_second.MergeAttribute("class", "sidebar - nav");
                }
            }
            string prueba = MenuHtmlHelpers.ObtenerLevelClass(level).ToString();

            tag_ul_second.AddCssClass(MenuHtmlHelpers.ObtenerLevelClass(level));
            tag_ul_second.InnerHtml += item_second.ToString();
            return(tag_ul_second.ToString());
        }