【发布时间】:2023-01-11 04:17:43
【问题描述】:
我正在编写一个 blazor 应用程序,用户必须在其中以单选按钮的形式选择一组选项。此选择需要在组件内部完成。这也意味着,我需要将数据从子组件中的无线电组传递到父组件。
考试
以下是子组件和父组件的代码 sn-ps。该测试涉及在子组件中选择四个季节(春季、夏季、秋季和冬季)之一。当用户选择四个季节中的任何一个时,该选择也需要在父组件中更新。
试图
第一次尝试是使用Editform。
这是子组件。 Pages\Child.razor
<h1>Child</h1>
EditForm Model="model">
<InputRadioGroup @bind-Value="SelectedValue">
@foreach (var revOption in (Season[])Enum
.GetValues(typeof(Season)))
{
<InputRadio Value="@revOption" @onchange="@UpdateSelection"/>
<text> </text>
@revOption <text> </text>
}
</InputRadioGroup>
<p>Selected Season inside Child: @SelectedValue</p>
</EditForm>
@code {
[Parameter]
public string SelectedValue { get; set; } = "No seasons selected.";
[Parameter]
public EventCallback<string> TestEvent { get; set; }
Model model = new Model();
class Model
{
public Season Season { get; set; }
}
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
private async Task UpdateSelection()
{
SelectedValue = model.Season.ToString();
await TestEvent.InvokeAsync(SelectedValue);
}
}
和父组件index.razor
<h1>Parent</h1>
<Child TestEvent=@UpdateChildSeason />
<p>Season data from Child: @ChildSeason</p>
@code
{
string ChildSeason;
void UpdateChildSeason(string value)
{
ChildSeason = value;
}
}
这不能正常工作。我不将数据传递给父母
附:同时,如果我选择任何一个单选按钮,所有的单选按钮都会被绿色按钮覆盖。
我不知道为什么会这样。
【问题讨论】:
标签: c# radio-button blazor two-way-binding