无法有条件地获得 html 渲染?

Can't get the html render conditionally?

我在使用 asp.net 核心 2.0

有条件地获取 html 页面呈现时遇到了一个奇怪的事件
    <head>
        @{
                var user = await _userManager.FindByNameAsync(User.Identity.Name);
         }
    </head>
    <body>
     @if (user != null)
     {
       <a href="/user/edit/?username=@user.UserName" class="dropdown-toggle">
       <span class="hidden-xs">@user.FullName</span>
                                   </a>
     }
   </body>

对于这个布局,它给出了错误:“名称'user'在当前上下文中不存在它曾经在.net core 1.1和经典中工作正常asp.net.

但是,如果我这样做,那就没问题了。好奇怪。

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

您似乎无法在 "head" 标记内声明变量。我尝试了以下方法,效果很好:

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