如何在视图中显示第二个模型的数据

本文关键字:第二个 模型 数据 显示 视图 | 更新日期: 2023-09-27 17:59:08

我正在努力为狗制作一个谱系网站,我正在努力找出如何在狗的详细信息页面上显示父母、后代等的数据。

@model DogPedigree.Entities.Dog
@{
    ViewBag.Title = "Details";
}
<h2>Details</h2>
<div>
    <h4>Dog</h4>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.AKCRegNumber)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.AKCRegNumber)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.name)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.name)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.sex)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.sex)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.breed)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.breed)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.birthday)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.birthday)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.sirenumber)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.sirenumber)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.damnumber)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.damnumber)
        </dd>
    </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.AKCRegNumber }) |
    @Html.ActionLink("Back to List", "Index")
</p>

模型也是如此。AKCRegNumber是我的主密钥,父系号码是父亲的AKCRegNumber,而该死的号码是母亲的AKCRegNumber。关于如何从父行提取一些数据,比如将名称显示为父行的详细信息页面链接,有什么技巧吗?感谢

如何在视图中显示第二个模型的数据

您需要一个范围更广的模型:

using DogPedigree.Entities
public class DogModel
{
    public Dog CurrentDog { get; set; }
    public Dog FatherDog { get; set; }
    public Dog MotherDog { get; set; }
    // other properties you need...
}

在将DogModel发送到View之前,请使用所需的任何数据(例如,来自数据库的数据)填充DogModel。

您也可以将Title的属性添加到此模型中。。。

public string Title { get; set; }

而不是从ViewBag进行设置和检索。

简而言之:根据需要创建可扩展的模型,用相关数据填充它,然后传递给View。

所以我在我的DogsController中添加了一个新方法:

public async Task<IActionResult> Pedigree(int id)
    {
        var dog = await _context.Dogs.SingleOrDefaultAsync(m => m.ID == id);
        var dam = await _context.Dogs.SingleOrDefaultAsync(m => m.Name == dog.Dam);
        var sire = await _context.Dogs.SingleOrDefaultAsync(m => m.Name == dog.Sire);
        var damDam = await _context.Dogs.SingleOrDefaultAsync(m => m.Name == dam.Dam);
        var damSire = await _context.Dogs.SingleOrDefaultAsync(m => m.Name == dam.Sire);
        var sireDam = await _context.Dogs.SingleOrDefaultAsync(m => m.Name == sire.Dam);
        var sireSire = await _context.Dogs.SingleOrDefaultAsync(m => m.Name == sire.Sire);
        Dogs[] dogs = new Dogs[7] { dog, dam, sire, damDam, damSire, sireDam, sireSire };
        return View(dogs.ToList());
    }

而且效果很好。我想知道这是否符合MVC的最佳实践?