2016-01-07 3 views
5
<input type="hidden" value="@ViewData["LoginProvider"]?.ToString() ?? null" /> 

Когда ViewData имеет нулевое значение, это делает half-conversion и скрытое поле содержит значение: ?.ToString() ?? nullC# 6 синтаксис Razor View

Я уверен, что я включен в 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> 

Почему?

ответ

5

Существует проблема с ?? оператор, левое значение является строкой, а правое значение равно null, поэтому это не правильный синтаксис. Кроме того, поскольку есть операция присваивания, вам нужно заключить их в круглые скобки.

Вы можете попробовать следующее:

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