在Blazor服务器页面中,我找不到任何方法来检测何时选择了无线电组中的不同无线电项目。
下面是一个onchange事件永远不起作用的示例:
<InputRadioGroup @bind-Value="selectedValue">
<InputRadio Value="1" @onchange="()=>IsDirty = true">Option 1</InputRadio>
<InputRadio Value="2" @onchange="()=>IsDirty = true">Option 2</InputRadio>
<InputRadio Value="3" @onchange="()=>IsDirty = true">Option 3</InputRadio>
</InputRadioGroup>
@code
{
private string selectedValue;
private bool IsDirty { get; set; }
}
有没有办法在Blazor Server中设置IsDirty标志?
这是dotnet 7使用dotnet new blazorserver-empty
生成模板项目。
3条答案
按热度按时间j8yoct9x1#
您可以使用
get
和set
的新属性:但是,要注意几件事:
selectedValue
时,不要使用属性,因为这样也会设置布尔值。f5emj3cl2#
下面是代码的一个工作示例,展示了实现所需目标的两种方法。我不使用lambda匿名方法,因为它们很昂贵:它们必须在每次组件渲染时创建。
所有事件都在
InputRadioGroup
组件上触发,而不是单个项目:它是一个组件,而不是一组未链接的元素。dxxyhpgq3#
由于您显然试图跟踪状态,因此这里有一种使用编辑上下文对象和记录的不同方法。无需手动设置或取消设置
IsDirty
:编辑上下文自动跟踪状态。