为什么复选框仍可以检查?

问题描述 投票:0回答:1

为什么复选框仍可以检查?

@if (@GearTypeView.PickN > 1) { @foreach (GearView gearView in GearTypeView.GearViews) { <div class="row"> <div class="col m-1"> <input type="checkbox" checked="@IsChecked(gearView.GearId)" @onchange="(ChangeEventArgs args) => { OnGearChanged(args, gearView.GearId); }" /> &nbsp; @gearView.GearDescription </div> </div> } } @code { [Parameter] public GearTypeView GearTypeView { get; set; } = new(); private List<int> selectedGearIds = new(); private void OnGearChanged(ChangeEventArgs args, int gearId) { bool isChecked = (Boolean)args.Value; if (isChecked && !selectedGearIds.Contains(gearId) && selectedGearIds.Count < GearTypeView.PickN) { selectedGearIds.Add(gearId); } else if (!isChecked && selectedGearIds.Contains(gearId)) { selectedGearIds.Remove(gearId); } } private bool IsChecked(int gearId) { bool isChecked = selectedGearIds.Contains(gearId); return isChecked; } }

当我在ongearchanged()结束时放置一个断点时,已适当更新了检查复选框的列表,包括不允许超过最大值(称为pickn)。 当我在Ischecked()的末尾放置断点时,评估将返回预期的true/false。 &每次单击复选框时,都会调用()。 我尝试将statehaschanged()添加到ongearchanged()的末尾,但表现出同样的意外行为。

提前感谢!
blazor
1个回答
0
投票

由于不能自动触发绑定,您可以使用
@IsChecked
@bind
,例如以下内容:

@bind:after
    
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.