1

我正在使用带有 Razor 页面的新 ASP.NET Core 3.1 应用程序,我想在其中使用第三方 Blazor 组件,但我无法让它工作。我遵循了许多网站上关于如何使用 Razor 页面在基于 MVC 的应用程序中启用 Blazor 组件的说明(更改 startup.cs 中的 Configure 和 ConfigureServices 方法,添加端点,包括 Blazor 的 .js 等)。

如果我自己编写一个组件并使用它,它似乎工作得很好。但我尝试使用 Syncfusion 的 Blazor 库,但它只是拒绝工作。我在 Razor 页面中尝试过类似的东西

@(await Html.RenderComponentAsync<Syncfusion.EJ2.Blazor.Calendars.EjsDateTimePicker>(RenderMode.ServerPrerendered))

这适用于我手动创建的 Blazor 组件,但不适用于第三方 EjsDateTimePicker 组件。我还确保包含所需的 @using 引用,并且 VS 会找到所有内容,以及在我的布局文件中包含 JS 引用。

我还尝试将第三方组件包含到我手动创建的组件中,因为 Blazor 允许这样做并且 VS 识别组件/标签但仍然拒绝呈现它。在这种情况下,当我调用自己的组件时

<CustomRazorTest>@(await Html.RenderComponentAsync<TestProj.Components.Pages.CustomRazorTest>(RenderMode.ServerPrerendered))</CustomRazorTest>

它加载除第三方组件之外的所有内容。我还尝试了不同的渲染方法,以防万一可能修复它。但似乎没有任何效果。

4

1 回答 1

0

我能够让它工作。必须对我的项目进行一些细微的更改,其中一些我不完全确定为什么。

对于其他可能遇到问题的人,这是我必须解决的一些问题。

  1. 不管什么原因,
<script src="~/_framework/blazor.server.js" autostart="false"></script>

不一样

<script src="_framework/blazor.server.js" autostart="false"></script>

我的项目拒绝在没有 ~/ 的情况下工作,即使 MSFT 自己页面上的示例不使用它。

  1. 在正确声明 blazor.server.js 之后,我需要以下代码才能使事件正常工作,否则按钮单击等操作将无法注册。它必须放在上面的 blazor.server.js 之后:
<script>
  Blazor.start({
    configureSignalR: function (builder) {
      builder.withUrl('/_blazor');
    }
  });
</script>
  1. 我有一些对 Syncfusion 的 MVC .js 包的引用,因为一旦我遇到了 Blazor 组件的问题,我就尝试了 MVC 工具,并且我把这些引用留在了里面。它们显然会导致冲突和意外行为。

我认为还有一两件事也需要调整,但我现在忘记了。如果我记得还有什么,我会更新我的回复。

于 2019-12-09T15:50:33.560 回答