Построение TreeView в ASP.NET MVC

255
19 июня 2018, 09:40

Подскажите пожалуйста что здесь не так: Это работает:

        @helper BuildMenu(IEnumerable<DepartamentsStructViewModel> data, Decimal? parentId = null)
        {
            var items = data.Where(d => d.DPS_DATESTART < DateTime.Now && d.DPS_DATEFINISH > DateTime.Now && d.DPS_PARID == parentId).OrderBy(i => i.DPS_PREVID);
            if (items.Any())
            {
                <ul>
                    @foreach (var item in items)
                    {
                        <li>
                            <button class="accordion">@item.DPS_NAME</button>
                            @BuildMenu(data, item.DPS_ID)
                        </li>
                    }
                </ul>
            }
        }

А это нет:

    public static MvcHtmlString DepartamentsStruct(this HtmlHelper html, IEnumerable<DepartamentsStructViewModel> data, Decimal? parentId = null)
    {
        var items = data.Where(d => d.DPS_DATESTART < DateTime.Now && d.DPS_DATEFINISH > DateTime.Now && d.DPS_PARID == parentId).OrderBy(i => i.DPS_PREVID);
        TagBuilder ul = new TagBuilder("ul");
        if (items.Any())
        {
            foreach (var item in items)
            {
                TagBuilder li = new TagBuilder("li"); 
                TagBuilder button = new TagBuilder("button");
                button.AddCssClass("accordion");
                button.SetInnerText(item.DPS_NAME);
                DepartamentsStruct(html, data, item.DPS_ID);
                li.InnerHtml = button.ToString();
                ul.InnerHtml += li.ToString();
            }
        }
        return new MvcHtmlString(ul.ToString());
    }
Answer 1

Проблема в том, что вызов DepartamentsStruct(html, data, item.DPS_ID); внутри foreach по сути ни на что не влияет. Вам надо результат этого вызова добавить к li элементу, сразу за кнопкой.

li.InnerHtml += DepartamentsStruct(html, data, item.DPS_ID);
READ ALSO
как записать в массив числа textbox?

как записать в массив числа textbox?

как записать в массив числа из textbox разделенных пробелом? Допустим, пользователь ввел 12 12 4 6 7 9 - получилось 6 элементов массива, b[0] = 12, b[1] = 12,

250
tabControl сделать вкладку неактивной

tabControl сделать вкладку неактивной

На форме есть tabControl, возможно ли в зависимости от переданного условия сделать одну из вкладок элемента не активной?

256