在MVC中显示对象名称而不是ID

时间:2018-11-03 20:17:12

标签: c# .net asp.net-mvc model controller

考虑我有一个像这样的模型:

public class Branch
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int ParentId { get; set; }
}

和示例数据:

Id -----名称----- ParentId

01 -----父级----- 00

02 -----儿童------- 01

在Index.html视图中,我在此表中显示项目列表:

enter image description here

那如果我想显示父母的名字而不是父母的名字怎么办?我可以将“父母”模型与孩子的模型分开,但我希望它们在同一张表中。

2 个答案:

答案 0 :(得分:1)

您可以考虑使用ViewModel来处理这种情况。

public class BranchVM : Branch
{
    // because it extends Branch it has Id, Name, and ParentId
    public string ParentName {get;set;}
}

在您的业务逻辑中获取字段,然后将此视图模型传递到接受BranchVM作为其模型和视图的视图。

答案 1 :(得分:0)

尝试了多种方法后,我决定使用联接,如下所示:

作为我的模特:

sum (funcion5 (x:xs))

作为我的控制者:

public class Branch
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? ParentId { get; set; }

    [NotMapped]
    public string ParentName { get; set; }
}

并作为我的视图:

        public ActionResult Index()
    {
        var branches = db.Branches;
        var query = from child in branches
            join parent in branches on child.ParentId equals parent.Id into parentJoin
            select new 
            {
                Id = child.Id,
                ParentId = child.ParentId,
                Name = child.Name,
                ParentName = parentJoin.FirstOrDefault().Name
            };
        var result = query.ToList().Select(e => new Branch
        {
            Id = e.Id,
            ParentId = e.ParentId,
            Name = e.Name,
            ParentName = e.ParentName
        }).ToList();
        return View(result);
    }

}