我有一个使用 MVC 和实体框架的 Web 项目。我有一家公司和一张植物表。工厂表通过 companyId 外键与公司相关。在我看来,我通过表单(plantNo、plantName、plantDefinition)从用户那里获取植物数据。在我的索引页面中,我从用户那里获取公司 ID 并为该 ID 创建一个公司,然后重定向到公司页面,在那里我从用户那里获取公司字段数据(companyName、companyAddress 等)并重定向到 Plants 页面。在工厂页面中,添加了每个新工厂,并且它们都具有相同的 companyId,因为它们都属于那家公司。最初当用户第一次进入页面时没有植物,所以当我尝试在我的植物表中显示所有植物条目时我得到一个
NullReferenceException
。我写了一个 else 语句来显示默认值,因为我认为如果我检查我的模型是否为空,并打印默认值,就不会有NullReferenceException
错误。
什么是实现显示所有植物的表格的合理方法,并且在提交新植物后,表格也会更新?
这是我针对所描述问题的代码片段:
<table class="table">
<thead>
<tr>
<th style="width:120px;">Plant Number</th>
<th>Plant Name</th>
<th>Plant Definition</th>
<th>Update</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
@if (Model.Company.Plants!= null)
{
@foreach (var item in Model.Company.Plants)
{
<th>@item.PlantNo</th>
<td>@item.PlantName</td>
<td>@item.PlantDefinition</td>
}
}
else
{
<th>Plant Default Number</th>
<td>Plant Default Name</td>
<td>Plant Default Definition</td>
}
</tbody>
</table>
编辑
根据评论区的讨论,原来
Model
是null
.
您正在检查
Model.Company.Plants!= null
正在检查
Plants
的 Company
的 Model
是否与 null
不同。但是,由于 Model
为空,因此 Model.Company
没有意义。它基本上是在询问一个未知/不存在的Company
的Model
。您可以将条件更改为:
@if ((Model != null) && (Model.Company != null) && (Model.Company.Plants!= null))
然后它应该去执行你的 else 语句,如果它们中的任何一个是
null
.