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

如何在Blazored模态对话框与页面间传递ID参数

解决Blazored模态框传递Id到Edit组件的问题

你的Edit组件原本通过路由参数接收Id,但在Blazored模态框中使用该组件时,无需依赖路由,直接通过组件参数传递即可,具体操作如下:

1. 调整Edit组件,支持参数接收

保留原有的@page "/edit/{Id}"以兼容路由访问,同时添加[Parameter]属性的字段来接收模态框传递的Id:

@page "/edit/{Id}"

@code {
    // 根据你的实际Id类型调整,比如string
    [Parameter]
    public int Id { get; set; }

    protected override void OnInitialized()
    {
        // 在这里用Id加载对应的数据,路由和模态框传递的Id都能生效
    }
}

2. 修改表格中的Edit按钮,传递Id到模态框

首先确保页面已注入Blazored.Modal的IModalService:

@inject IModalService modal

然后替换原有的<a>标签为触发模态框的按钮,通过ModalParameters传递Id:

方式一:通过单独方法处理(可读性更好)

<td>
    <button class="nav-link" @onclick="@(() => OpenEditModal(item.id))">
        <span class="oi oi-pencil" aria-hidden="true">Edit</span>
    </button>
</td>

在页面的@code区块添加打开模态框的方法:

private void OpenEditModal(int itemId)
{
    var modalParams = new ModalParameters();
    modalParams.Add("Id", itemId);

    modal.Show<Edit>("Edit", modalParams);
}

方式二:直接在点击事件中传递(更简洁)

<td>
    <button class="nav-link" @onclick="@(() => modal.Show<Edit>("Edit", new ModalParameters { { "Id", item.id } }))">
        <span class="oi oi-pencil" aria-hidden="true">Edit</span>
    </button>
</td>

注意

如果你的Id是字符串类型,只需把代码中的int替换为string即可。这样修改后,Edit组件既能通过路由正常访问,也能在Blazored模态框中接收Id并加载对应数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:05:25