在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。
答案 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>