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

, bir half-conversion ve gizli alan içerir yapar değeri: ?.ToString() ?? nullC 6. sözdizimi

ben C# 6 etkinleştirdiğinizden emin değilim:

<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> 

Neden?

cevap

5

Bir sorun var. operatör, soldaki değer dize ve sağdaki değer nulldır, bu nedenle doğru bir sözdizimi değildir. Ayrıca, bir atama işlemi olduğundan, bunları paranteze sarmanız gerekir.

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

Aşağıdaki deneyebilirsiniz