我是否必须在控制器中操纵模型数据以传递给视图?



我有两个表:Cache(日期(时间戳)和站点)和SiteContent,其中我存储单词及其计数。一个站点有许多SiteContents条目。我想把SiteContents发送给View。

缓存:

[Required]
public string Site { get; set; }
[Required]
public DateTime Date { get; set; }
public virtual ICollection<Cash> SiteContent { get; set; }

SiteContent:

[Required]
public int CashId { get; set; }
public virtual Cache Site { get; set; }
[Required]
public string Word { get; set; }
[Required]
public uint Count { get; set; }
控制器代码:
public IActionResult Index()
{
//Console.WriteLine(_context.Caches.ToArray()[0].Site);
//Console.WriteLine(_context.SiteContents.ToArray()[0].Word);
//Console.WriteLine(_context.SiteContents.ToArray()[0].Site.Site);
return View(_context.SiteContents.ToList());
}

视图代码:

@using ParserWeb.Models
@model IEnumerable<SiteContent>
@{
ViewData["Title"] = "Home Page";
}

<table class="table">
@foreach (SiteContent c in Model)
{
<tr> <td>@c.Site.Date</td> <td>@c.Site.Site</td> <td>@c.Word</td> <td>@c.Count</td> </tr>
}
</table>

为什么只有当我取消注释时代码才有效?否则有

系统。NullReferenceException: "对象引用未设置为对象的实例。">

@foreach (SiteContent c in Model)
{
<tr> <td>@c.Site.Date</td> <td>@c.Site.Site</td> <td>@c.Word</td> <td>@c.Count</td> </tr>
}

您想使用@c.Site.Date,但不包含Site

Site = null,你想使用Site。日期,(属性为null)这是异常的原因。

答:

return View(_context.SiteContents.Include(s => s.Site).ToList());

最新更新