Blazor WebAssembly将枚举作为参数传递给组件

时间:2020-07-24 19:43:17

标签: asp.net-core enums blazor blazor-webassembly

我正在创建Blazor WebAssembly应用程序,我有一个枚举,我想将这样的枚举作为参数传递给我的Blazor组件

public enum EMenu
{
    Menu1 = 1,
    Menu2 = 2,
    Menu3 = 3,
}

[Parameter] public EMenu Id { get; set; }

<NavMenu id="menu1" />

EMenu是我的枚举,Id是我在NavMenu组件上的参数。但它会显示Specified cast is not valid消息。

我在Google上搜索并看到了这个GitHub问题https://github.com/dotnet/aspnetcore/issues/19139,并且根据它,当您用枚举名称为枚举值添加前缀时,以下内容应该起作用

<NavMenu id="EMenu.Menu1" />

但是它对我不起作用,同样的错误。有人可以帮忙指出出什么问题吗?

1 个答案:

答案 0 :(得分:2)

如果此参数属性是在NavMenu组件上定义的

library(RestRserve)
app = Application$new()
app$add_get(
  path = "/hello", 
  FUN = function(request, response) {
    response$set_body("Hello from RestRserve")
  })
backend = BackendRserve$new()
backend$start(app, http_port = 8080)

然后您像这样实例化NavMenu组件:

[Parameter] public EMenu Id { get; set; }

<NavMenu Id="EMenu.Menu1"/> 而不是像以前那样的Id ... id是一个以大写字母开头的组件参数。

您的枚举类应位于应用程序的根文件夹中。