Blazor Server(.NET6):无法将method group转为EventCallback错误解决
问题原因
InputNumber组件默认会推断泛型类型为int?(可空整数),导致其ValueChanged的类型是EventCallback<int?>,但你的OnIntValueChanged方法接受的是非空int参数,类型不匹配因此报错。而InputText绑定的是string(非可空引用类型),泛型推断准确,所以OnStringValueChanged能正常匹配。
解决方法
方法一:显式指定InputNumber的泛型类型
在CustomInputBase.razor中,给InputNumber明确指定泛型参数为非空int,让ValueChanged的类型与方法签名匹配:
@if (Type == "number") { <InputNumber<int> Value="@IntValue" ValueExpression="@(() => IntValue)" class="@Class" id="@Id" ValueChanged="OnIntValueChanged" /> }
方法二:将IntValue改为可空类型
如果业务需要支持空值输入,修改CustomInputBase.cs中的相关参数和方法,让类型统一为可空整数:
public class CustomInputBase : ComponentBase { [Parameter] public string Type { get; set; } [Parameter] public int? IntValue { get; set; } [Parameter] public EventCallback<int?> IntValueChanged { get; set; } // 其他参数保持不变 protected async Task OnIntValueChanged(int? newValue) { IntValue = newValue; await IntValueChanged.InvokeAsync(IntValue); } // OnStringValueChanged方法保持不变 }
此时Razor文件中的InputNumber无需修改泛型,组件会自动推断为int?,方法签名可正常匹配。
内容的提问来源于stack exchange,提问作者Sadikul Haque Sadi
相关产品推荐
相关产品推荐

