Razor 视图中的 C# 6 语法

C# 6 syntax in Razor View

<input type="hidden" value="@ViewData["LoginProvider"]?.ToString() ?? null" />

ViewData 为 null 时,它生成一个 half-conversion 并且隐藏字段包含值:?.ToString() ?? null

我确定我已经启用了 C# 6:

<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
    <providerOption name="CompilerVersion" value="v4.0" />
</compiler>

为什么?

??有问题吗?运算符,左边的值为字符串,右边的值为空,因此,它不是正确的语法。另外,由于涉及赋值操作,需要用括号括起来。

您可以尝试以下方法:

<input type="hidden" value="@(ViewData["LoginProvider"]?.ToString() ?? "")" />