如何在 MVC 视图中显示表中的所有值时避免 NullReferenceException?

问题描述 投票:0回答:1

我有一个使用 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
.

html asp.net-mvc entity-framework model-view-controller view
1个回答
0
投票

您正在检查

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
.

© www.soinside.com 2019 - 2024. All rights reserved.