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

Blazor Razor页面登录注册功能报错CS0120、CS0117求助

解决NavMenu.razor中的CS0120和CS0117错误

错误原因分析

  • CS0120:错误地将NavigationManager作为静态类调用,实际上它是依赖注入的服务实例,必须通过注入对象访问成员。
  • CS0117:缺少必要的命名空间引用,导致LocationChangedEventArgs类型无法被编译器识别。

修正后的完整代码

@inject NavigationManager Navigation
@using Microsoft.AspNetCore.Components

<div class="top-row container-fluid">
    <a class="navbar" href="">WebsiteProject</a>
    <input type="checkbox" title="Navigation menu" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar" />
</div>

<div class="nav-scrollable collapse navbar-collapse" id="navbar">
    <nav class="">
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="" Match="NavLinkMatch.All">
                Home
            </NavLink>
        </div>
        <div class="nav-item px-3">
            <NavLink class="nav-link" href="Blog">
                Blog
            </NavLink>
        </div>
    </nav>
</div>

@code {
    private string? currentUrl;

    protected override void OnInitialized()
    {
        currentUrl = Navigation.ToBaseRelativePath(Navigation.Url);
        Navigation.LocationChanged += OnLocationChanged;
    }

    private void OnLocationChanged(object? sender, LocationChangedEventArgs e)
    {
        currentUrl = Navigation.ToBaseRelativePath(e.Location);
        StateHasChanged();
    }

    public void Dispose()
    {
        Navigation.LocationChanged -= OnLocationChanged;
    }
}

核心修正点

  1. 替换静态调用为实例调用:将所有NavigationManager.XX的写法改为注入的实例Navigation.XX,比如Navigation.ToBaseRelativePath、Navigation.Url,直接解决CS0120错误。
  2. 添加命名空间引用:在文件顶部添加@using Microsoft.AspNetCore.Components,让编译器识别LocationChangedEventArgs类型,消除CS0117错误。

后续Identity整合建议

如果要添加登录/注销导航项,可额外注入AuthenticationStateProvider,通过GetAuthenticationStateAsync()获取用户状态,动态显示登录、注册或注销按钮。

内容的提问来源于stack exchange,提问作者Jax Harris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:40:01