You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server中Razor页面HTML可用@context.User,@code中不可用的原因

问题原因及解决方案

核心原因

HTML部分的@context是Blazor提供的语法糖,它自动关联了CascadingAuthenticationState传递下来的AuthenticationState对象。但@code代码块并不会自动识别这个context变量,必须通过显式声明级联参数的方式来获取AuthenticationState。

解决步骤

  1. 在@code块中声明一个级联参数,类型为Task<AuthenticationState>:
    [CascadingParameter]
    private Task<AuthenticationState> AuthenticationStateTask { get; set; }
    
  2. 在需要获取用户名的逻辑中,先await这个任务拿到AuthenticationState实例,再提取用户信息:
    var authState = await AuthenticationStateTask;
    var currentUserName = authState.User.Identity?.Name;
    

补充说明

CascadingAuthenticationState的作用是将AuthenticationState作为级联值在组件树中传递,HTML模板里的@context是Blazor为了简化模板写法提供的快捷方式,但代码块没有这种自动绑定机制,必须手动注入级联参数才能访问到认证状态。

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:32:00