我个人认为与该问题无关的一点背景,但它可能有用。应该显示树的控制器从WCF服务获取根节点,该节点以这种方式实现,并返回该节点的子节点列表。
[DataContract]
public class Node
{
[DataMember]
public int NodeID { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int ParentID { get; set; }
[DataMember]
public List<Node> children;
}
现在到了重要的部分。我希望树在视图中看起来像一棵树,所以我也尝试根据在SO上找到的示例写出一种递归剃刀帮助器
@helper DisplayTree(IEnumerable<Project.UserService.Node> nodes)
{
foreach (var item in nodes)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.NodeID }) |
@Html.ActionLink("Details", "Details", new { id = item.NodeID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.NodeID })
</td>
</tr>
if(item.children.Any())
{
@DisplayTree(item.children)
}
}
@DisplayTree(Model)
模型是根节点的子节点列表。现在视图显示树中存在的所有节点,但我希望它看起来像一棵真实的树。我现在不知道如何描述它,所以一个直截了当的解释是我希望它有点让人联想到windows cmd中的文件树。但是我想在不使用除C#和Razor之外的任何东西的情况下这样做,并且当我使用jquery或js搜索所有涉及的结果时,我现在还没有。有人能给我一个正确方向的提示吗?