Подскажите пожалуйста что здесь не так: Это работает:
@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());
}
Проблема в том, что вызов DepartamentsStruct(html, data, item.DPS_ID); внутри foreach по сути ни на что не влияет. Вам надо результат этого вызова добавить к li элементу, сразу за кнопкой.
li.InnerHtml += DepartamentsStruct(html, data, item.DPS_ID);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости