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

MudBlazor Dialog控件抛出System.InvalidCastException异常,求调试帮助

MudBlazor Dialog 抛出 InvalidCastException 问题排查

错误信息

System.InvalidCastException: Specified cast is not valid.
at Microsoft.AspNetCore.Components.Reflection.PropertySetter.CallPropertySetter[GolfReg,List1](Action2 setter, Object target, Object value)
at Microsoft.AspNetCore.Components.Reflection.PropertySetter.SetValue(Object target, Object value)
at Microsoft.AspNetCore.Components.Reflection.ComponentProperties.<SetProperties>g__SetProperty|3_0(Object target, PropertySetter writer, String parameterName

相关代码

var parameters = new DialogParameters();
var playersToEdit = new List<GolfPreReg>();
var partner = PlayingField.Where(p => p.ID == SelectedPlayer.Last().ID && p.GolfDayYear == DateTime.Now.Year).ToList();
playersToEdit.Add(SelectedPlayer.Last());
var options = new MudBlazor.DialogOptions();
if (playersToEdit.Count == 2)
{
    var partnerToAdd = partner.FirstOrDefault(pta => pta.ID != SelectedPlayer.Last().ID);
    playersToEdit.Add(partnerToAdd!);

    options = new MudBlazor.DialogOptions { MaxWidth = MaxWidth.Large };
}
else
{
    options = new MudBlazor.DialogOptions { MaxWidth = MaxWidth.Small };
}
parameters.Add("PlayFieldEdit", playersToEdit);
try
{
    var dialog = await DialogService.Show<GolfReg>("Edit player group", parameters, options).Result;

问题根源

这个错误的核心是Dialog传递的参数类型,与弹窗组件GolfReg中对应属性的类型不匹配。你传入的是List<GolfPreReg>,但GolfReg里的PlayFieldEdit属性类型大概率和这个不一致。

常见的不匹配场景:

  • GolfReg的PlayFieldEdit定义为List<GolfReg>(不是GolfPreReg)
  • 属性是单个GolfPreReg对象,而非集合类型
  • 属性未标记[Parameter]特性,或者访问修饰符不是public

解决方案

  1. 检查GolfReg组件的PlayFieldEdit属性定义,确保:
    • 类型严格匹配List<GolfPreReg>
    • 带有[Parameter]特性,且为public
      示例正确定义:
    [Parameter]
    public List<GolfPreReg> PlayFieldEdit { get; set; } = new();
    
  2. 确认参数键名"PlayFieldEdit"和组件属性名完全一致(C#是大小写敏感的)
  3. 后续可以排查partnerToAdd!的空值风险,但当前异常由类型转换导致,优先处理前两点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:11:23