Razor View中的C#6语法

Tân*_*Tân 5 razor c#-6.0

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

ViewData为null时,它使a 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>
Run Code Online (Sandbox Code Playgroud)

为什么?

Fel*_*Cen 5

有一个问题?? ?? 运算符,左手值是字符串,右手值是null,因此,它不是正确的语法.此外,由于涉及到赋值操作,您需要将它们包装在括号中.

您可以尝试以下方法:

<input type="hidden" value="@(ViewData["LoginProvider"]?.ToString() ?? "")" />
Run Code Online (Sandbox Code Playgroud)