Blazor组件EventCallback获取ChangeEventArgs值:重构后值为null
Blazor下拉组件ChangeEventArgs为空的解决方法
你需要在组件内部的@onchange事件中正确接收并传递ChangeEventArgs参数,才能让父页面拿到非空的事件数据。
修改后的组件完整代码
Razor模板部分
<select class="form-control" @onchange="@((ChangeEventArgs e) => Location_OnChange.InvokeAsync(e))"> <option value="-1">All Locations</option> @if (Locations != null) { @foreach (var location in Locations) { <option value="@location.Id">@location.Description</option> } } </select>
代码逻辑部分
@code { [Parameter] public EventCallback<ChangeEventArgs> Location_OnChange { get; set; } [Parameter] public IList<Location>? Locations { get; set; } }
关键要点
- 组件内的
@onchange需要显式接收ChangeEventArgs参数((ChangeEventArgs e)),再通过InvokeAsync(e)把参数传递给父组件的回调 - 也可以用更简洁的写法,直接将
EventCallback绑定到@onchange,Blazor会自动处理参数传递:<select class="form-control" @onchange="Location_OnChange">
这样修改后,父页面的Location_OnChange方法就能拿到正常的ChangeEventArgs,通过e.Value获取选中项的数值。
内容的提问来源于stack exchange,提问作者Rob C
相关产品推荐
相关产品推荐

