Microsoft.AspNetCore.Components.Forms.InputRadioGroup`不支持xxx



我想在blazor中使用单选组,所以在实现编辑表单并选择其中一个单选按钮后,我得到了这个错误:

Microsoft.AspNetCore.Components.Forms.InputRadioGroup`1[ENameCafe.SPA.Models.GameModel]不支持类型"EGameCafe.SAP.Models.GameModel".

这是我的编辑表格:

<EditForm Model="ViewModel" OnValidSubmit="HandleCreateGroup">
@if (ViewModel.Games.List.Any())
{
<InputRadioGroup Name="GameSelect" @bind-Value="Gamemodelsample">
@foreach (var game in ViewModel.Games.List)
{
<InputRadio Value="game" />
@game.GameName
<br />
}
</InputRadioGroup>
}
</EditForm>
@code{
public GameModel GameModelSample { get; set; } = new();
}

游戏模型为:

public class GameModel
{
public string GameId { get; set; }
public string GameName { get; set; }
}

InputRadioGroup与其他Blazor组件一样,只支持有限数量的类型,如StringInt32。你有正确的想法,但不幸的是,你遇到了Blazor的一种限制。

您可以尝试创建一个包装器字段。

private String _selectedGameId = "<Your Default Id>";
public String SelectedGameId
{
get => _selectedGameId;
set
{
_selectedGameId = value;
// Set the property of the ViewModel used in your Model Property of the EditContext or any other property/field 
ViewModel.SelectedGame = ViewModel.Games.List?.FirstOrDefault(x => x.GameId == value);
}
}

使用属性SelectedGameId作为InputRadioGroup组件的绑定值。

<InputRadioGroup Name="GameSelect" @bind-Value="SelectedGameId" >
@foreach (var game in ViewModel.Games.List)
{
<InputRadio Value="game.GameId" />
@game.GameName
<br />
}
</InputRadioGroup>

或者,您可以创建一个从InputRadioGroup继承的自定义组件来创建一种GameBasedInputRadioGroup。如果你感兴趣,我可以寄一个样品。

因为在代码@bind-Value="Gamemodelsample"中,您试图将GameName(字符串(绑定到Gamemodelsaple(对象(,这将导致类型不匹配问题。

您只需要将代码修改为:

@bind-Value="GameModelSample.GameName"

相关内容

  • 没有找到相关文章

最新更新