2017-11-14 13 views
0

私はasp.netコアこのレイアウトについては2.0htmlを条件付きでレンダリングできないのですか?

<head> 
     @{ 
       var user = await _userManager.FindByNameAsync(User.Identity.Name); 
     } 
    </head> 
    <body> 
    @if (user != null) 
    { 
     <a href="/user/edit/[email protected]" class="dropdown-toggle"> 
     <span class="hidden-xs">@user.FullName</span> 
            </a> 
    } 
    </body> 

で条件付きHTMLページのレンダリングを得ることに奇妙な事件を持って、それがエラーを与える:「名前 『ユーザーは、』現在のコンテキスト内に存在しないこれは、.NETコア1.1とクラシックasp.netで正常に動作するために使用。

私はこのように行う場合は、それが正常に動作します。とても奇妙。

<body> 
@{ 
    var user = await _userManager.FindByNameAsync(User.Identity.Name); 
    if (user != null) 
    { 
     <a href="/user/edit/[email protected]" class="dropdown-toggle"> 
     <span class="hidden-xs">@user.FullName</span> 
           </a> 
    } 
} 

答えて

0

「head」タグ内に変数を宣言することはできないようです。私は次のことを試してみてうまくいきました。

@{ 
    var user = await _userManager.FindByNameAsync(User.Identity.Name); 
} 
<head> 
    ... 
</head> 
<body> 
@if (user != null) 
{ 
    <a href="/user/edit/[email protected]" class="dropdown-toggle"> 
     <span class="hidden-xs">@user.FullName</span> 
    </a> 
} 
</body> 
+0

私はヘッダにブレークポイントを作っても正しい値を示していますが、どういうわけかそれでもボディにエラーが発生します。 –

+0

剃刀は頭と体を別の "スコープ"として扱いますが、headタグの外にコードを移動すると、現在の文書 – ceferrari

+0

にはグローバルになり、他のバージョンではうまくいきます。あなたの鋭い目のためにありがとう:D –

関連する問題