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

MS Blazor如何在OnClick事件后实现不同razor页面间的赋值

实现方案

Blazor跨组件同步状态最适合该场景的方案是全局状态容器,实现步骤如下:

步骤1:创建共享状态服务

首先新建用于存储共享图片路径的服务,内置状态变更通知事件:

public class SharedImageState
{
    // 存储当前选中的图片路径
    public string CurrentImagePath { get; private set; }

    // 状态变更事件,供订阅的组件触发重渲染
    public event Action OnStateChanged;

    // 对外暴露的更新图片路径方法
    public void UpdateImagePath(string path)
    {
        CurrentImagePath = path;
        NotifyStateChanged();
    }

    private void NotifyStateChanged() => OnStateChanged?.Invoke();
}

步骤2:注册服务到依赖注入容器

在Program.cs中将该服务注册为单例(Blazor WebAssembly全局单例即可满足需求):

builder.Services.AddSingleton<SharedImageState>();

步骤3:MainLayout绑定图片点击事件

修改MainLayout.razor,注入服务后给图片A、B绑定点击触发的更新逻辑:

@inject SharedImageState ImageState
@inherits LayoutComponentBase

<!-- 其他布局代码 -->
<div class="image-area">
    <!-- 图片A -->
    <img src="path/to/a.png" @onclick="() => SelectImage("path/to/a.png")" alt="图片A" />
    <!-- 图片B -->
    <img src="path/to/b.png" @onclick="() => SelectImage("path/to/b.png")" alt="图片B" />
</div>

<div class="main-content">
    @Body
</div>

@code {
    private void SelectImage(string imgPath)
    {
        ImageState.UpdateImagePath(imgPath);
    }
}

步骤4:NavMenu订阅状态变更

修改NavMenu.razor,订阅状态变更事件,自动触发重渲染更新图片C:

@inject SharedImageState ImageState
@implements IDisposable

<!-- 其他导航菜单代码 -->
<div class="nav-image-block">
    <!-- 图片C路径绑定共享状态值 -->
    <img src="@ImageState.CurrentImagePath" alt="图片C" />
</div>

@code {
    protected override void OnInitialized()
    {
        // 订阅状态变更,状态更新时触发当前组件重渲染
        ImageState.OnStateChanged += StateHasChanged;
        // 可选:初始化时设置默认图片
        ImageState.UpdateImagePath("path/to/default.png");
    }

    // 组件销毁时取消订阅,避免内存泄漏
    public void Dispose()
    {
        ImageState.OnStateChanged -= StateHasChanged;
    }
}
可选替代方案

如果不想新增服务,也可以用**级联参数(CascadingParameter)**实现:在MainLayout里把当前图片路径和更新方法作为级联值向下传递,NavMenu接收该级联值即可,但是如果组件层级较深,维护成本会比状态容器高。


内容的提问来源于stack exchange,提问作者cheah ck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:54:10