我有一个带有 ParentID 的模型,它引用自身。
public partial class Categories
{
public long CategoryID { get; set; }
public string CategoryName { get; set; }
public Nullable<int> ParentID { get; set; }
}
在列表视图(索引视图)中,我希望能够显示 ParentID 的 CategoryName(其中 ParentID 不为空)而不是 ParentID。例如,我在下图中显示的是空白的父项,因为我不知道如何处理它。
索引视图
@foreach (var item in Model)
{
<tr id="[email protected]">
<td>@i</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ParentID)
</td>
</tr>
i = i + 1;
}
我如何实现这个目标
我已复制您的问题来解决它。
1. 首先我创建了一个模型类:
public class Categories
{
public long CategoryID { get; set; }
public string CategoryName { get; set; }
public Nullable<int> ParentID { get; set; }
}
2. 具有
Index
操作方法的控制器,可将类别列表返回到 Index
视图。
代码:
public ActionResult Index()
{
List<Categories> li = new List<Models.Categories>()
{
new Categories { CategoryID = 0 , CategoryName = "Work" , ParentID = 1},
new Categories { CategoryID = 0 , CategoryName = "Goods" , ParentID = 2},
new Categories { CategoryID = 0 , CategoryName = "Service",ParentID = 1 },
new Categories { CategoryID = 0 , CategoryName = "Buildings",ParentID = 1},
};
return View(li);
}
3. 接下来,我们创建了一个可从视图访问的静态方法,该方法采用
ParentID
参数作为输入。
传递父级后,它将获取类别名称,并将其返回到视图。
代码:
namespace WebApplication1.Models
{
public static class ManageCategories
{
public static string GetCategoriesbyParentID(int? ParentID)
{
string data = string.Empty;
List<Categories> li = new List<Categories>()
{
new Categories { CategoryID = 0 , CategoryName = "Work" , ParentID = 1 },
new Categories { CategoryID = 0 , CategoryName = "Goods" , ParentID = 2 },
new Categories { CategoryID = 0 , CategoryName = "Service",ParentID = 1 },
new Categories { CategoryID = 0 , CategoryName = "Buildings",ParentID = 1 },
};
data = (from a in li
where a.ParentID == ParentID
select a.CategoryName).FirstOrDefault();
return data;
}
}
}
4. 视图(我们在其上调用静态方法
GetCategoriesbyParentID
并将 ParentID
传递给它)
代码:
@model List<WebApplication1.Models.Categories>
@{
Layout = null;
}
<link href="~/Content/bootstrap.css" rel="stylesheet" />
@{ int i = 1; }
<table class="table">
<tr>
<td>CategoryID</td>
<td>Business Category Name</td>
<td>Parent Business Category</td>
</tr>
@foreach (var item in Model)
{
<tr id="[email protected]">
<td>@i</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryName)
</td>
<td> @WebApplication1.Models.ManageCategories.GetCategoriesbyParentID(item.ParentID)</td>
</tr>
i = i + 1;
}
</table>
</div>
输出: