如何在视图中显示第二个模型的数据
本文关键字:第二个 模型 数据 显示 视图 | 更新日期: 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的最佳实践?