递归函数在mvc视图aspx页面



我有一个递归的数据结构,我想ASP。在MVC程序的View部分中走动。我甚至不清楚这是否可能。下面是c#中模型类的定义:

Public class recursive_data_structure
{
   public List<recursive_data_structure> Children;
   //some_class is defined elsewhere, it is irrelevant
   public some_class Me;
}

ViewModel包含这个类的一个实例。在ASP中有办法吗?. NET(使用MVC)走模型,使我可以有某种递归的HTML生成?

如果这个问题措辞不当或明显,请向我道歉。我是MVC新手

您尝试呈现分层树,在ASP中有很多方法可以做到这一点。净MVC。您可以使用部分视图,如下所示:

这是你的简单层次模型

public class HierarchicalModel
{
    public HierarchicalModel()
    {
        this.Children = new List<HierarchicalModel>();
    }
    public String Name { get; set; }
    public List<HierarchicalModel> Children { get; set; }
}

,然后在一个操作中创建/获取模型并将其放入viewbag中。

public ActionResult Index()
{
    ViewBag.Message = "Welcome to ASP.NET MVC!";
    var level0 = new HierarchicalModel() { Name = "item 0, level 0" };
    level0.Children.Add(new HierarchicalModel() { Name = "item 0, level 1" });
    level0.Children.Add(new HierarchicalModel() { Name = "item 1, level 1" });
    level0.Children.Add(new HierarchicalModel() { Name = "item 2, level 1" });
    var level1 = new HierarchicalModel() { Name = "item 3, level 1" };
    level1.Children.Add(new HierarchicalModel() { Name = "item 0, level 2" });
    level1.Children.Add(new HierarchicalModel() { Name = "item 1, level 2" });
    level0.Children.Add(level1);
    ViewBag.HierarchicalModel = level0; 
    return View();
}

现在你需要创建一个局部视图,例如_HierarchicalModel。视图/共享目录下的cshtml文件。将mvcapapplication4替换为您的模型所在的名称空间。

@model MvcApplication4.HierarchicalModel
<li>
    @Model.Name
    <ul>
    @foreach (var item in Model.Children)
    {
        @Html.Partial("_HierarchicalModel", item);  
    }    
    </ul>
</li>

然后在视图中渲染。

@{
    MvcApplication4.HierarchicalModel model = ViewBag.HierarchicalModel; 
}
<p>
    <ul>@Html.Partial("_HierarchicalModel", model)</ul>
</p>

这是最简单的方法。在任何情况下,你都必须关心循环引用和深层层次结构。

据我所知,MVC不会为你自动遍历递归结构。

你需要做的是为List或IEnumerable创建一个局部视图,为recursive_data_structure创建另一个局部视图。

在IEnumerable模型的局部视图中:

@foreach (recursive_data_structure child in Model)
{ 
    @Html.Partial("recursive_data_structureView", child)  
}

在recursive_data_structure模型的局部视图中:

<span>Model</span>

如果你想要一个绑定到递归数据的树视图,Telerik有一个作为他们免费MVC包的一部分。

最新更新