首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让第三方Blazor组件在Razor页面中工作?

如何让第三方Blazor组件在Razor页面中工作?
EN

Stack Overflow用户
提问于 2019-12-05 03:03:20
回答 1查看 356关注 0票数 1

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

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

代码语言:javascript
复制
@(await Html.RenderComponentAsync<Syncfusion.EJ2.Blazor.Calendars.EjsDateTimePicker>(RenderMode.ServerPrerendered))

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

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

代码语言:javascript
复制
<CustomRazorTest>@(await Html.RenderComponentAsync<TestProj.Components.Pages.CustomRazorTest>(RenderMode.ServerPrerendered))</CustomRazorTest>

它加载除第三方组件之外的所有内容。我还尝试了不同的渲染方法,以防可能会修复它。但似乎什么都不起作用。

EN

回答 1

Stack Overflow用户

发布于 2019-12-09 23:50:34

我能让它工作起来。我的项目有几个小的改动,其中一些我不完全确定为什么。

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

无论出于什么原因,

代码语言:javascript
复制
<script src="~/_framework/blazor.server.js" autostart="false"></script>

不同于

代码语言:javascript
复制
<script src="_framework/blazor.server.js" autostart="false"></script>

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

  1. 在正确声明blazor.server.js之后,我需要以下代码来让事件正常工作,否则像按钮单击这样的事情就不会注册。它必须放在上面的blazor.server.js之后:

代码语言:javascript
复制
<script>
  Blazor.start({
    configureSignalR: function (builder) {
      builder.withUrl('/_blazor');
    }
  });
</script>

  1. 我有一些同步的MVC .js包的引用,因为一旦我遇到Blazor组件的问题,我就尝试了MVC工具,但我把这些引用留在了里面。他们显然造成了冲突和意想不到的行为。

我认为还有一两件事需要调整,但我现在正在忘记它们。如果我记得任何其他事情,我会更新我的回复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59183041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档