Razor组件无法获取父页面URL传递的Id参数问题
问题解决:Blazor子组件获取父页面路由参数
当前ChaptersByCampaignList组件的Id参数始终为0,无法获取父页面路由/campaigns/{id:int}中的CampaignId,导致无法正确加载对应章节数据,解决步骤如下:
步骤1:父页面接收路由参数
在父页面的@code块中添加路由参数绑定,确保父页面能获取到URL中的id:
@code { [Parameter] public int Id { get; set; } // 保留原有的campaign、message变量及ShowAll等方法 }
步骤2:显式传递参数给子组件
在父页面引用ChaptersByCampaignList组件时,将父页面的Id参数传递给子组件:
<ChaptersByCampaignList Id="@Id" />
步骤3:(可选)子组件参数校验优化
为避免Id为0时发起无效API请求,在子组件的OnParametersSetAsync方法中添加参数校验:
protected override async Task OnParametersSetAsync() { if (Id > 0) { await ChapterService.GetAllByCampaignId(Id); } }
问题原因说明
子组件的[Parameter]属性需要父组件主动传递值,int类型参数默认初始值为0,如果不显式传递父页面的路由参数,子组件就无法获取到正确的CampaignId。
内容的提问来源于stack exchange,提问作者Darkmatter5
相关产品推荐
相关产品推荐

