请参阅下面的错误部分。其他相关代码如下:
模型:
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
BlogPostController
public IActionResult Index()
{
return View("~/Views/BlogsTest/Index.cshtml");
}
查看 [Index.cshtml]:
@model IEnumerable<ASPCoreCodeFirstApp.Models.Blog>
<p>
<a asp-controller="BlogPost" asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Url)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Url)
</td>
<td>
<a asp-controller="BlogPost" asp-action="Edit" asp-route-id="@item.BlogId">Edit</a>
</td>
<td>
<a asp-controller="BlogPost" asp-action="Create" asp-route-id="@item.BlogId">Edit</a>
</td>
</tr>
}
</tbody>
</table>
错误 @foreach (var item in Model)....line
:
我可以看到Index方法被调用,当我将断点放在Index.cshtml文件的@foreach (var item in Model)
行时,我得到Model为null,浏览器抛出以下错误。博客表确实有数据。即使它没有数据,foreach循环应该返回空结果而不是NULL异常错误。索引操作方法中的视图相对路径似乎是写入的,因为Index.cshtml视图确实被调用。我可能缺少什么?:
NullReferenceException: Object reference not set to an instance of an object.
MoveNext in Index.cshtml, line 22
文件夹层次结构:
上面的模型位于下面突出显示的Model.cs文件中:
答案 0 :(得分:3)
您的视图是一个强类型视图,需要Blog对象的列表(确切地说,IEnumerable):
@model IEnumerable<ASPCoreCodeFirstApp.Models.Blog>
对于强类型视图,您必须从控制器操作传递视图所需类型的对象,以便视图引擎能够呈现视图(即使它只是一个空列表):
View("ViewName", new List<Blog>())