Asp.net mvc 如何在MVC视图中检查空值?

Asp.net mvc 如何在MVC视图中检查空值?,asp.net-mvc,Asp.net Mvc,我正在使用MVC和LINQtoSQL类 由于外键可以为null,我有一条记录具有f.k.null,其他记录具有值 现在我在视图中按索引视图显示它 在索引视图中,我通过编写如下代码来解决f.k <%= Html.Encode(item.UserModified.UserName) %> 现在我有一个问题是“对象引用未设置” 这是因为我们在其中一个f.k.字段中有空值 因此,我是否可以编写代码来检查关联对象是否指向null或nothing?对于C#,可以使用条件运算符: <%

我正在使用MVC和LINQtoSQL类

由于外键可以为null,我有一条记录具有f.k.null,其他记录具有值

现在我在视图中按索引视图显示它

在索引视图中,我通过编写如下代码来解决f.k

<%= Html.Encode(item.UserModified.UserName) %>

现在我有一个问题是“对象引用未设置”

这是因为我们在其中一个f.k.字段中有空值

因此,我是否可以编写代码来检查关联对象是否指向null或nothing?

对于C#,可以使用条件运算符:

<%= Html.Encode(item.UserModified == null ? "" : item.UserModified.UserName) %>


但是,最好将UserName属性移动为项的直接子项,或者将其放入ViewData中。

如果需要,可以在视图中编写任何代码,因此可以执行以下操作:

<%= Html.Encode(item.UserModified.UserName ?? string.Empty) %>
然后,您可以简单地执行以下操作:

<%= Html.SafeEncode(item.UserModified.UserName) %>


当然,如果用户修改为NULL而不是用户名,那么您将需要一些不同的逻辑。

首先考虑在您的模型中,没有名称的用户实例是否有效。如果否,那么应该在构造函数中放置一个guard子句

其次,过多重复的空检查是一种代码味道。您应该使用重构。您可以根据创建空对象

这将确保您不必到处检查Null

<%= Html.SafeEncode(item.UserModified.UserName) %>