【发布时间】:2021-09-21 07:16:53
【问题描述】:
我有一个选择选项组件,它绑定和填充特定枚举类的值。但是,我也希望相同的组件也可以用于另一个枚举类。我尝试修改组件并使用typeof 和dynamic,但它不起作用。如何为多个枚举类重复使用相同的选择选项组件?
在我的页面中调用组件:
<SelectEnumComponent @bind-EnumProperty="@driver.DriverType"
EnumType="@(typeof(DriverType))"/>
选择选项组件:
// SelectEnumComponent.razor
<div class="form-group">
<select class="form-control"
value="@EnumProperty"
@onchange="OnValueChanged">
@foreach (var type in Enum.GetValues(EnumType))
{
<option value="@type">@type</option>
}
</select>
</div>
@code {
[Parameter]
public dynamic EnumProperty { get; set; }
[Parameter]
public EventCallback<dynamic> EnumPropertyChanged { get; set; }
[Parameter]
public Type EnumType { get; set; }
private Task OnValueChanged(ChangeEventArgs e)
{
EnumProperty = Enum.Parse(EnumType, e.Value.ToString(), true); // case insensitive
return EnumPropertyChanged.InvokeAsync(EnumProperty);
}
}
枚举类 - PropertyType:
public enum PropertyType
{
[Display(Name = "String")]
String,
[Display(Name = "Numeric")]
Numeric,
[Display(Name = "Double")]
Double,
[Display(Name = "Enumeration")]
Enumeration,
[Display(Name = "Boolean")]
Boolean
}
枚举类 - DriverType:
public enum DriverType
{
[Display(Name = "WEB API")]
API,
[Display(Name = "Device")]
Device,
[Display(Name = "SSD")]
SSD
}
错误:
error CS1503: Argument 2: cannot convert from 'Microsoft.AspNetCore.Components.EventCallback<SharedModels.DriverType>' to 'Microsoft.AspNetCore.Components.EventCallback'
【问题讨论】:
-
Visual Studio 中有关 EventCallback 的这些错误消息非常错误。你的代码没有编译运行吗?
-
是的,代码没有编译运行。
标签: c# asp.net asp.net-core razor blazor