如此以来,C#6.0出来的时候,我已经用空条件操作相当多了。例:
Model?.Person?.Zip
不过,我现在有一个情况我有凡客在视图域模型运行的解决方案。虽然我追捕开发商用斧头,我觉得很容易,只需做一些null检查在视图中。
然而,当我走这在剃刀:
@Model?.Person?.Zip
我Model?
被看作是动态的,但?
打破了动态的东西,将其余的呈现为文本。
你如何解决这个问题?
只是一个猜测
@(Model?.Person?.Zip)
对于一些额外的完整性(我在ASP.NET团队在微软工作):
正如迪特尔·B(和其他一些)正确地指出,@(Model?.Person?.Zip)
会工作。
所述@(...)
语法可以被认为是作为一个“转义语法”,允许更大的灵活性,其中的代码将被解析为表达术语。
当剃刀的当前版本的建成,只有C#5在旁边,所以新的C#语法6并没有直接的支持。
在ASP.NET团队正在备份端口一些剃刀V4(在ASP.NET 5 / MVC使用6)支持C#6回剃刀V3(在ASP.NET 4.x版/ MVC 5中使用)。
当你错过了从项目下面的NuGet包的一个或两个也会发生这种情况:
只要改变目标框架.NetFramework 4.7
并安装使用NuGet包管理这些软件包:
然后使用它像这样(注意括号允许充分C#语法,而不是局部的剃刀语法):
@(Model.Country?.Name)