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

Quando il ViewData è nullo, fa una half-conversion e il campo nascosto contiene il valore: ?.ToString() ?? nullC# 6 sintassi Razor vista

Sono sicuro che ho attivato 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> 

Perché?

risposta

5

C'è un problema con il ?? operatore, il valore della mano sinistra è una stringa e il valore della mano destra è nullo, quindi, non è una sintassi corretta. Inoltre, poiché è coinvolta un'operazione di assegnazione, è necessario racchiuderli tra parentesi.

Si può provare la seguente:

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