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

.NET 6升级至.NET 8后Blazor WebApp的InputRadioGroup功能失效求助

.NET 6升级至.NET 8后Blazor WebApp的InputRadioGroup功能失效求助

嘿,我来帮你搞定这个问题!从你贴的代码和描述来看,这个问题大概率和.NET 8 Blazor的渲染模式或者InputRadioGroup的属性处理变化有关,我给你分两种情况给出解决方案:

情况1:你的项目是.NET 8新创建的Blazor Web App(用了新模板)

.NET 8的Blazor Web App默认是静态渲染模式,这种模式下页面没有交互能力,InputRadioGroup的绑定自然没法触发组件切换。解决起来很简单:

  1. 在页面的@page指令下面加一行,启用交互渲染模式,比如用InteractiveServer(根据你的项目需求选InteractiveWebAssembly或InteractiveAuto也可以)
  2. 去掉InputRadio元素上重复的Name属性——InputRadioGroup已经指定了Name,子元素会自动继承,重复设置反而会在.NET 8里导致绑定逻辑冲突

修改后的完整代码如下:

@page "/addaccounts"
@rendermode InteractiveServer <!-- 启用交互模式 -->
@inject NavigationManager NavigationManager
@inject IAddAccountUseCase AddAccountUseCase

<h1>Account management</h1>

<p>
    <InputRadioGroup Name="SingleOrBatch" @bind-Value="@_single">
        <InputRadio Value="@true" /> Single account
        <InputRadio Value="@false" /> CSV Import
    </InputRadioGroup>
</p>

@if (_single)
{
    <AddSingleAccountComponent></AddSingleAccountComponent>
}
else
{
    <AddMultipleAccountsComponent></AddMultipleAccountsComponent>
}

@code {
    private bool _single = true;
}

情况2:你的项目是从.NET 6升级来的传统Blazor Server/WASM项目

这种情况下问题大概率出在重复的Name属性上,.NET 8对InputRadioGroup的子元素属性处理更严格了,只需要去掉InputRadio上的Name属性就行,其他代码保持不变。

额外排查小技巧

如果按上面改完还是不行,可以试试这两个小操作:

  • 检查子组件AddSingleAccountComponent和AddMultipleAccountsComponent的渲染模式,确保它们也支持交互(如果父页面已经启用交互模式,子组件一般会自动继承)
  • 清一下浏览器缓存,有时候.NET 8的资源缓存会残留旧逻辑,导致新代码不生效

备注:内容来源于stack exchange,提问作者fmnbg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 10:14:29