将 blazor 组件的事件注册到 razor 页面

Register event from blazor component into razor page

我有一个 razor 页面项目,我想在其中包含来自 blazor 客户端项目的合成器。这两个项目都在 dotnet 6.

我设法让合成器工作并向它传递一些值(通过 param-{ParameterName})

<component type="typeof(KeywordFilterBlazor.Pages.Index)" render-mode="WebAssemblyPrerendered" 
   param-TestValue="@Model.TestValue" />

现在我希望能够对组件内的事件做出反应,例如单击按钮。

我已经有一个 Web 表单项目,它通过 javascript 消息与 Blazor 组件(使用 iframe 实例化)进行通信。

我可以使用 javascript 消息,但我想知道是否有更好的解决方案,因为直接支持将 Blazor 集成到 Razor 中(与旧的 Web 表单项目不同)。

可以是这样的 exemple 他使用 from field 将 blazor 字段的值转换为 razor 表单。但我也想要 blazor 组件内的按钮,如果我可以有多个按钮,我会优先考虑。

有人有解决这个问题的好方法吗?

Register event from blazor component into razor page

不可能。使用从组件到页面的导航。

请问如何将嵌入式组件中的值 return 传递给 parent Razor Pages 页面?如果是这样,您不能按照链接的代码示例中所示解决此问题吗?在任何情况下,Razor 嵌入式组件中的参数属性只有一种方式绑定,从提供 parent(不是组件而是页面)到嵌入式 Razor 组件。目前,我只能看到一种解决方案:使用带有查询字符串中值的 NavigationManager 从组件导航到 Razor 页面。这可能是一个好的解决方案还是一个糟糕的解决方法取决于您的态度。

无法使用参数属性 bi-directionally 是使用两种不同框架的限制,迫使您做出一些牺牲,而您链接到的代码示例的作者确实做出了一些牺牲,有意或无意,我不知道...我所知道的是 parent(或容器状态服务)应该提供它的 children 一些数据,而它们 children ,应该 return 一些结果到 parent 或服务进一步处理,也许,通过给定的 Web Api 端点等将数据保存在数据库中

我想强调的是组合来自两个不同框架的代码的固有局限性,以及牺牲良好实践以提供合理且有效的解决方案的必要性。考虑在 Github...

中打开一个问题