ASP.NET MVC - 如何显示引用自身的模型的值

问题描述 投票:0回答:1

我有一个带有 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;
    }

我如何实现这个目标

asp.net-mvc
1个回答
0
投票

我已复制您的问题来解决它。

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>

输出:

Output

© www.soinside.com 2019 - 2024. All rights reserved.