Razor @page 枚举参数

问题描述 投票:0回答:1

在 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")]
但没有成功。

c# enums razor-components
1个回答
0
投票

到目前为止我找到的唯一解决方案是绑定到字符串参数并使用 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;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.