条件运算符在MVC Razor的某个地方运行不好?

时间:2015-08-26 23:17:43

标签: c# asp.net-mvc

在cshtml文件中,我有一个像

这样的行的表
<td>@lic.Dealer == null ? @String.Empty : @lic.Dealer.Name</td>

但是,在运行时,由于Dealer为null,因此运行时不断在@ lic.Dealer.Name上抛出异常抱怨NullObjectReferenceException。

所以我不得不使用

var dealerName = @lic.Dealer == null ? @String.Empty : @lic.Dealer.Name;


<td>@dealerName</td>

我只是想知道为什么第一段代码与条件运算符不兼容?

我正在使用MVC5。

1 个答案:

答案 0 :(得分:6)

Dealer确实为空。

你忘了用括号括起你的陈述。

编写此代码时:

<td>@lic.Dealer == null ? @String.Empty : @lic.Dealer.Name</td>

Razor并不认为这是一个完整的陈述。相反,它会尝试在ToString()上调用lic.Dealer,因为它认为@lic.Dealer正在尝试输出经销商。

将代码括在括号中,如下所示:

<td>@(lic.Dealer == null ? String.Empty : lic.Dealer.Name)</td>