我是否必须在 Controller 中操作模型数据才能传递给 View?
Do I have to manipulate the Model data in Controller to pass to View?
我有两个表:缓存(日期(时间戳)和站点)和 SiteContent,我在其中存储单词及其计数。一个站点有许多 SiteContents 条目。我想将 SiteContents 发送到 View。
缓存:
[Required]
public string Site { get; set; }
[Required]
public DateTime Date { get; set; }
public virtual ICollection<Cash> SiteContent { get; set; }
网站内容:
[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>
为什么代码只有在我取消注释时才有效?否则有
System.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.Date,(属性 of null)这就是异常的原因。
答案:
return View(_context.SiteContents.Include(s => s.Site).ToList());
我有两个表:缓存(日期(时间戳)和站点)和 SiteContent,我在其中存储单词及其计数。一个站点有许多 SiteContents 条目。我想将 SiteContents 发送到 View。
缓存:
[Required]
public string Site { get; set; }
[Required]
public DateTime Date { get; set; }
public virtual ICollection<Cash> SiteContent { get; set; }
网站内容:
[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>
为什么代码只有在我取消注释时才有效?否则有
System.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.Date,(属性 of null)这就是异常的原因。
答案:
return View(_context.SiteContents.Include(s => s.Site).ToList());