将 html 输入的 checked 属性绑定到 blazor 中的布尔方法返回值



我目前正在做一个blazer项目。在此项目中,我需要向 C# 代码中的列表添加一些默认值。问题是我找不到将布尔方法返回值绑定到输入的"checked"属性的方法。

法典:

我确实有一个列表,并且我正在将此列表中的每个条目添加一个输入(复选框(字段到我的html中:

@foreach (ProfessionViewModel prof in Professions)
{
<div class="form-group m-1">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="@prof.Id" 
@onchange="eventArgs => { ToggleProfessions(prof, eventArgs.Value); }" />

</div>
</div>
}

我找不到一种方法将"checked"属性绑定到检查该项目是否存在于其他列表(选定职业列表,在@code部分中定义(的方法。

我的清单:

public List<ProfessionViewModel> SelectedProfessions { get; set; } = new List<ProfessionViewModel>();

我的布尔返回方法:

private bool CheckIfProfessionIsAssigned(ProfessionViewModel prof)
{
if (SelectedProfessions.Contains(prof))
return true;
return false;
}

问题描述:

"职业"集合包含应用程序中可用的所有职业。在这种形式中,用户应该能够选择某些职业个人(对于职业过滤器(。 每个选定的职业都包含在"选定职业"集合中。问题是我无法根据帮助程序属性"CheckIfProfessionIsAsassigned "绑定(或呈现(复选框值,该属性确定用户当前是否选择了此职业。

我没有自己尝试这些,但基于这个答案 - https://stackoverflow.com/a/60343185 - 这样的事情可能会用于最初选中复选框:

<input type="checkbox" checked="@CheckIfProfessionIsAssigned(prof)">

或者,您可以尝试创建一个名为professionsSelected的整数和布尔值字典,如果是否选中,则在其中存储每个职业 ID,然后将其绑定到复选框,例如:

<input type="checkbox" @bind="@professionsSelected[prof.Id]" />

最新更新