C# Blazor select-like组件不更新数据源中的值
在我的Blazor Webassembly(客户端)3.2.0应用程序中,我在一个页面上有许多C# Blazor select-like组件不更新数据源中的值,c#,data-binding,blazor,client-side,C#,Data Binding,Blazor,Client Side,在我的Blazor Webassembly(客户端)3.2.0应用程序中,我在一个页面上有许多select元素,这些元素创建了一个组合框,列出了enum的可用项: @foreach(Enum.GetValues中的var元素(typeof(SomeEnum))) { @元素 } 虽然这样做有效,但我希望避免对每个这样的组合框重复我自己,并考虑创建以下EnumSelect组件: @typeparam T @foreach(Enum.GetValues(typeof(@T))中的var元素) {
select
元素,这些元素创建了一个组合框,列出了enum
的可用项:
@foreach(Enum.GetValues中的var元素(typeof(SomeEnum)))
{
@元素
}
虽然这样做有效,但我希望避免对每个这样的组合框重复我自己,并考虑创建以下EnumSelect
组件:
@typeparam T
@foreach(Enum.GetValues(typeof(@T))中的var元素)
{
@元素
}
@代码{
[参数]
公共T值{get;set;}=default(T)!;
[参数]
public EventCallback ValueChanged{get;set;}
}
然后像这样使用它:
但是,当显示SomeEnumValue
属性和枚举项时,从组合框中选择另一项时,不会将该属性写回
我不知道为什么这不起作用。我有点怀疑EnumSelect
组件存储它自己的值副本,而不是写回它,但我认为绑定解决了这个问题
有什么(更简单的)方法可以让这个组合框组件工作吗?我的错误在哪里(在理解绑定方面)?通过重新编写我的问题找到了答案(对不起,还不习惯所有Blazor术语): 对于我的问题,最后一个工作组件如下所示:检查属性中的值是否实际更改是必需的,或者我挂起了我的应用程序(可能是因为它想反复设置它):
@typeparam T
@foreach(Enum.GetValues(typeof(@T))中的var元素)
{
@元素
}
@代码{
私有T_值=默认值(T)!;
[参数]
公共价值
{
获取=>\u值;
设置
{
如果(_值等于(值))
返回;
_价值=价值;
ValueChanged.InvokeAsync(_值);
}
}
[参数]
public EventCallback ValueChanged{get;set;}
}