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

.NET 9 Blazor交互式服务器:InputRadioGroup重渲染丢失选中项

InputRadioGroup重渲染后丢失选中状态的解决方案

问题场景

使用InputRadioGroup实现单选切换组件,选中选项后页面能正确渲染目标组件,但InputRadioGroup重渲染后无法保留选中状态。尝试过将组件嵌套在EditForm中,也手动绑定checked属性做判断,均未解决问题。原本以为.NET 7已修复这类状态丢失问题,但现象依然存在。

根因分析

排查发现核心问题是类型不匹配:

  • InputRadio的Value绑定的是静态类MagicStrings中的byte类型常量
  • 绑定的目标属性ColorInt是int类型

Blazor的InputRadioGroup在校验选中状态时会严格匹配类型,即使数值相等,不同类型(byte vs int)会被判定为不匹配,导致重渲染后选中状态无法维持。

解决方法

统一绑定两边的类型即可,两种方案二选一:

方案1:修改绑定属性的类型

将ColorInt的类型从int改为byte,确保和MagicStrings中的常量类型一致:

@* 组件代码 *@
<InputRadioGroup @bind-Value="ColorInt">
    <InputRadio Value="@MagicStrings.Red" />红色<br />
    <InputRadio Value="@MagicStrings.Blue" />蓝色<br />
</InputRadioGroup>

@code {
    // 改为byte类型
    private byte ColorInt { get; set; }
}

方案2:修改静态类常量的类型

将MagicStrings中的byte常量改为int类型,匹配ColorInt的类型:

// 静态类代码
public static class MagicStrings
{
    // 把byte改为int
    public const int Red = 1;
    public const int Blue = 2;
    // 其他颜色常量同理修改
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 16:24:52