.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
相关产品推荐
相关产品推荐

