假设我们有一个模型类 Category
,其中包含了嵌套的子类别列表,我们想要创建和更新这个嵌套列表,可以通过以下方法实现:
在 Category
中增加一个属性 Children
,用于存储子类别列表:
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public List Children { get; set; }
}
创建一个视图模型类 CategoryViewModel
,用于在视图中显示和编辑数据,其中包含一个列表属性 ChildCategories
:
public class CategoryViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public List ChildCategories { get; set; }
}
在创建和编辑视图中,使用 EditorTemplates
来显示嵌套的子类别列表,例如:
@model CategoryViewModel
@using (Html.BeginForm())
{
@Html.HiddenFor(m => m.Id)
@Html.TextBoxFor(m => m.Name)
@Html.EditorFor(m => m.ChildCategories)
}
@* Editor Template *@
@model CategoryViewModel
@Html.HiddenFor(m => m.Id)
@Html.TextBoxFor(m => m.Name)
@if (Model.ChildCategories != null && Model.ChildCategories.Any())
{
@foreach (var child in Model.ChildCategories)
{
-
@Html.EditorFor(m => child)
}
}
在 CategoryController
中,使用递归方法来处理嵌套的子类别列表: