一对多关系
在作者和书之间,一个作者可以有多本书,而一本书只能属于一个作者:
模型:
public class Author
{
public int AuthorId { get; set; }
public string Name { get; set; }
public ICollection<Book> Books { get; set; }
}
public class Book
{
public int BookId { get; set; }
public string Name { get; set; }
public int? AuthorId { get; set; }
public Author Author { get; set; }
}
我已经使用EF生成了带有视图的适当控制器,现在,我想在Details.cshtml视图中为每个作者显示相应的相关书籍的名称。
这个
// GET: Authors/Details/5
public async Task<ActionResult> Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Author author = await db.Authors.FindAsync(id);
if (author == null)
{
return HttpNotFound();
}
return View(author);
}
详细信息.cshtml
具体如下:
@model MyApp.Models.Author
<div>
<h4>Author Info</h4>
<hr />
<dl class="dl-horizontal">
<dt style="font-size:20px">
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd style="font-size:20px">
@Html.DisplayFor(model => model.Name)
</dd>
<dt style="font-size:20px">
Associated Books
</dt>
@foreach (var item in Model.Books)
{
<dd>
@item.Name
</dd>
}
</dl>
</div>
但这会产生以下错误:
详细信息:System.NullReferenceException:对象引用未设置为
对象的实例。
我已经找到了这个类似问题的答案(
How to display a collection in View of ASP.NET MVC Razor project?
)但是,显然,没有成功。有人能告诉我我做错了什么吗?