我在Blazor服务器端使用MudBrazor,并尝试双重绑定MudChip。我想将所选芯片保存在数据库中,并在稍后检索数据,然后将芯片预先呈现为所选芯片。基本上是在芯片上做双重绑定。它似乎不起作用,我已经尝试过:
- 在OnInitialized方法中创建一个新芯片,并在SelectedChip属性上设置属性(Text、Color、IsSelected(:
<MudContainer>
<MudText Style="display:inline;color:white">Goal Type</MudText>
<MudChipSet @bind-SelectedChip="md" Style="display:inline;" Filter="true">
<MudChip Text="Financial" Color="Color.Dark">Financial</MudChip>
<MudChip Text="Personal" Color="Color.Dark">Personal</MudChip>
</MudChipSet>
</MudContainer>
这是代码:
MudChip md;
protected override void OnInitialized()
{
Init();
}
public void Init()
{
if (md == null)
{
md = new MudChip { Color = Color.Dark, Text = "Financial", IsSelected = true };
}
}
- 创建对所选芯片的引用:
<MudChipSet @bind-SelectedChip="md" @onselect="OnSelect" Style="display:inline;" Filter="true">
<MudChip Text="Financial" Color="Color.Dark">Financial</MudChip>
<MudChip @ref="personal" Text="Personal" Color="Color.Dark">Personal</MudChip>
</MudChipSet>
这是代码:
MudChip md;
MudChip personal;
protected override void OnInitialized()
{
if(md is null)
{
md = personal;
}
}
这些方法都不起作用,你知道双重绑定是否可能吗?我在GitHub页面上也问过,其中一位贡献者说,通过使用提供的例子,这是可能的。对我来说,它们帮不了什么忙。这是GitHub的问题:
https://github.com/Garderoben/MudBlazor/discussions/1791
OnInitialized在第一次渲染之前被激发,因此设置md=personal
时personal
仍将为null。
当firstRender为真时,将该代码移动到OnAfterRender(bool-firstRender(