在 Blazor(Razor 组件)中,有没有一种方法可以使用枚举的字符串值将页面 url 参数绑定到枚举
@page "/index/{MyEnum}"
[Parameter]
public MyEnumType MyEnum { get; set; }
这似乎在使用枚举的整数值时有效,但如果使用字符串则无法转换该值。
@page "/index/{MyEnum:int}"
[Parameter]
public MyEnumType MyEnum { get; set; }
有没有办法让它与字符串一起工作?
我尝试过使用
[JsonConverter(typeof(JsonStringEnumConverter))]
和 [EnumMember(Value = "myVal")]
但没有成功。
到目前为止我找到的唯一解决方案是绑定到字符串参数并使用 Enum.TryParse 转换为枚举
@page "/index/{MyEnumString}"
private MyEnumType MyEnum { get; set; }
[Parameter]
public string MyEnumString
{
get => MyEnum.ToString();
set
{
if (Enum.TryParse<MyEnum>(value, true, out var enumValue))
{
MyEnum = enumValue;
}
}
}