У меня такое чувство, что я делаю это ужасно, ужасно неправильно. Вложенные для циклов? Каков наилучший метод перечисления подкатегорий? У меня есть ощущение, что это связано с подготовкой списка в действии моего контроллера и отправкой его клиенту с помощью некоторого actionresult, но я не знаю с чего начать? Кто-нибудь может указать мне в правильном направлении? Вот мой Hacky код:Создание списка категорий и подкатегорий с помощью asp.net mvc2
<h2>Categories</h2>
<a href="javascript:;" onclick="newCategory()">Create New Category</a>
<br />
<ul class="parent">
<%foreach (var category in Model.Categories){%>
<%-- List all of the top-level parent categories --%>
<%if (category.IsParent && category.ParentId == 0)%>
<li>
<span class="buttons"><a href="javascript:;" onclick="editCategory(<%:category.CategoryId%>)" class="edit"></a> <a href="javascript:;" onclick="deleteCategory(<%:category.CategoryId%>)" class="delete"></a></span>
<span class="categoryName"><%:category.CategoryName%></span>
<span class="positionButtons"><%:Html.ActionLink(" ", "MoveCategoryUp", new {id = category.CategoryId},
new {Class = "moveUp"})%><%:Html.ActionLink(" ", "MoveCategoryDown", new {id = category.CategoryId},
new {Class = "moveDown"})%></span>
<%-- List all of the subs for each parent --%>
<ul>
<%-- Level 1 --%> <%foreach (var sub1 in Model.Categories){%>
<%if (sub1.ParentId == category.CategoryId){%>
<li>
<span class="buttons"><a href="javascript:;" onclick="editCategory(<%:sub1.CategoryId%>)" class="edit"></a> <a href="javascript:;" onclick="deleteCategory(<%:sub1.CategoryId%>)" class="delete"></a></span>
<span class="categoryName"><%:category.CategoryName%></span>
<span class="positionButtons"><%:Html.ActionLink(" ", "MoveCategoryUp", new {id = sub1.CategoryId},new {Class = "moveUp"})%><%:Html.ActionLink(" ", "MoveCategoryDown", new {id = sub1.CategoryId},new {Class = "moveDown"})%></span>
<%-- List all of the subs for each parent --%>
<%if (sub1.IsParent){%>
<ul>
<%-- Level 2 --%> <%foreach (var sub2 in Model.Categories){%>
<%if (sub2.ParentId == sub1.CategoryId){%>
<li>
<span class="buttons"><a href="javascript:;" onclick="editCategory(<%:sub2.CategoryId%>)" class="edit"></a> <a href="javascript:;" onclick="deleteCategory(<%:sub2.CategoryId%>)" class="delete"></a></span>
<span class="categoryName"><%:category.CategoryName%></span>
<span class="positionButtons"><%:Html.ActionLink(" ", "MoveCategoryUp", new {id = sub2.CategoryId},new {Class = "moveUp"})%><%:Html.ActionLink(" ", "MoveCategoryDown", new {id = sub2.CategoryId},new {Class = "moveDown"})%></span>
<%-- List all of the subs for each parent --%>
<%if (sub2.IsParent){%>
<ul>
<%-- Level 3 --%> <%foreach (var sub3 in Model.Categories){%>
<%if (sub3.ParentId == sub2.CategoryId){%>
<li>
<span class="buttons"><a href="javascript:;" onclick="editCategory(<%:sub3.CategoryId%>)" class="edit"></a> <a href="javascript:;" onclick="deleteCategory(<%:sub3.CategoryId%>)" class="delete"></a></span>
<span class="categoryName"><%:category.CategoryName%></span>
<span class="positionButtons"><%:Html.ActionLink(" ", "MoveCategoryUp",new {id = sub3.CategoryId},new {Class = "moveUp"})%><%:Html.ActionLink(" ", "MoveCategoryDown",new {id = sub3.CategoryId},new {Class = "moveDown"})%></span>
<%-- List all of the subs for each parent --%>
<%if (sub3.IsParent){%>
<ul>
<%-- Level 4 --%> <%foreach (var sub4 in Model.Categories){%>
<%if (sub4.ParentId == sub3.CategoryId){%>
<li>
<span class="buttons"><a href="javascript:;" onclick="editCategory(<%:sub4.CategoryId%>)" class="edit"></a> <a href="javascript:;" onclick="deleteCategory(<%:sub4.CategoryId%>)" class="delete"></a></span>
<span class="categoryName"><%:category.CategoryName%></span>
<span class="positionButtons"><%:Html.ActionLink(" ", "MoveCategoryUp", new {id = sub4.CategoryId}, new {Class = "moveUp"})%><%:Html.ActionLink(" ", "MoveCategoryDown", new {id = sub4.CategoryId}, new {Class = "moveDown"})%></span>
<%-- If more than 4 levels of subcategories are required, put another level here --%>
</li>
<%}%>
<%}%>
</ul>
<%}%>
</li>
<%}%>
<%}%>
</ul>
<%}%>
</li>
<%}%>
<%}%>
</ul>
<%}%>
</li>
<%}%>
<%}%>
</ul>
</li>
<%}%>
</ul>
Редактировать
К сожалению, этот код не делает результаты я ищу, так что я не могу реально обеспечить гораздо больше, чем это: http://jsfiddle.net/EeaGr/ каждый элемент списка имеет кнопки для вариантов редактирования/удаления и перемещения/сдвинута для своей категории. Моя категория имеет следующие свойства:
CategoryId: INT
Имя: строка
ParentID: INT
IsParent: BOOL
Должность: Int
Святая мать Божия. –
У меня возникли трудности с визуализацией вывода этого! Есть ли вероятность, что вы можете предоставить визуализированный вид HTML в http://jsfiddle.net/ ?? Вы также можете добавить CSS, чтобы мы могли посмотреть, что вы видите на странице – DaveDev
Lol, 2 года спустя, и я смотрю на это, я могу только повторить то, что Дарин упомянул ... «Святая мать Бога», ...о чем я только думал? – Gallen