我正在尝试建立一个狗的血统网站,我正试图找出如何在狗的详细信息页面上显示父母,后代等的数据。
@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>
所以model.AKCRegNumber是我的主键,sirenumber是父亲的AKCRegNumber,而damnumber是母亲的AKCRegNumber。有关如何从父行中提取一些数据的任何提示,例如可能将名称显示为父级详细信息页面的链接?感谢
答案 0 :(得分:1)
您需要一个范围更广的模型:
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。
答案 1 :(得分:0)
所以我在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最佳实践?