ASP中新的空条件运算符.NET MVC剃刀
本文关键字:NET MVC 剃刀 条件运算符 ASP | 更新日期: 2023-09-27 18:18:11
所以自从c# 6.0发布以来,我一直在大量使用空条件运算符。例子:
Model?.Person?.Zip
然而,我现在有一种情况,我有一个解决方案,其中客户操作视图中的域模型。虽然我会用斧头追捕开发人员,但我发现在视图中做一些null检查更容易。
然而,当我在Razor中这样做时:
@Model?.Person?.Zip
我的Model?
被视为动态的,但?
打破了动态的东西,其余的被渲染为文本。
你如何解决这个问题?
只是猜测
@(Model?.Person?.Zip)
为了一些额外的完整性(我在ASP。. NET团队):
正如Dieter B(和其他一些人)正确指出的那样,@(Model?.Person?.Zip)
将起作用。
@(...)
语法可以被认为是一种"转义语法",它在将哪些代码解析为表达式方面具有更大的灵活性。
当前版本的Razor构建时,只有c# 5,所以新的c# 6语法不直接支持。
ASP。. NET团队正在寻求将一些Razor v4(用于ASP. NET)后端移植。. NET 5/MVC 6)对c# 6的支持回到Razor v3(在ASP中使用)。净4。
当您从项目中缺少以下一个或两个NuGet包时,也可能发生这种情况:
- Microsoft.CodeDom.Providers.DotNetCompilerPlatform
- Microsoft.Net.Compilers
只需将目标框架更改为.NetFramework 4.7
,并使用Nuget软件包管理器安装这些软件包:
- Microsoft.CodeDom.Providers.DotNetCompilerPlatform
- Microsoft.Net.Compilers
然后像这样使用它(注意括号允许完整的c#语法而不是部分Razor语法):
@(Model.Country?.Name)