如何将参数传递给服务器端 Blazor 中的 razor 组件?

mko*_*mko 15 c# asp.net-core blazor blazor-server-side razor-components

如何将参数传递给 razor 组件?

到目前为止我试过

@(await Html.RenderComponentAsync<Rateplan>(RenderMode.ServerPrerendered, new { id= 100}))
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误

InvalidOperationException:不支持使用参数预呈现服务器组件。

我用 RenderMode.ServerPrerendered 尝试了同样的事情,但我收到一个错误

InvalidOperationException: 不支持带有参数的服务器组件。

我也试过做

<Rateplan Id="100"></Rateplan>
Run Code Online (Sandbox Code Playgroud)

但这甚至没有启动组件。

and*_*rup 19

在要接受参数的组件中,您需要将一个属性标记为参数

喜欢

[Parameter]
public List<Player> Players { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后你应该能够将参数作为

<Componentname Players="@players"></Componentname>
Run Code Online (Sandbox Code Playgroud)

(在这个例子中@players 是一个局部变量)

  • 我不再了解最新的西装外套了。但如果您认为答案已经过时,欢迎您提出修改建议。另外问题是:“如何将参数传递给服务器端 Blazor 中的 razor 组件?” 这是/曾经是这个问题的答案。他从未指定它需要与 @(await Html.RenderComponentAsync&lt;Rateplan&gt;(RenderMode.ServerPrendered, new { id= 100})) 一起使用,只是他尝试过,但没有成功。 (4认同)
  • 但仅从 ASP.NET Core 3.1 开始。此外,它没有回答这个问题,因为问题是关于使用“Html.RenderComponentAsync”渲染组件。 (2认同)

小智 5

将渲染模式设置为静态

@(await Html.RenderComponentAsync<Rateplan>(RenderMode.Static, new { id = 100 }))
Run Code Online (Sandbox Code Playgroud)

  • 使用最新的 Blazor 版本(或自 3.1 起),这也应该适用于 `Server` 和 `ServerPrerendered`:`@(await Html.RenderComponentAsync&lt;Rateplan&gt;(RenderMode.Server, new { id = 100 }))` 和`@(await Html.RenderComponentAsync&lt;Rateplan&gt;(RenderMode.ServerPreRendered, new { id = 100 }))`。 (5认同)