无法渲染blazor组件

时间:2019-08-30 21:30:32

标签: asp.net-core blazor blazor-server-side

使用Visual Studio 2019预览版2.0,.NET Core SDK 3.0.100-preview8-013656。服务器端的blazor应用程序。

The blazor docs说渲染组件的方法是调用Html.RenderComponentAsync。我在任何地方都找不到这个静态Html类。
在SDK目录中,当我查看Microsoft.AspNetCore.Components.dll时,我看到它具有一个带有此类方法的HtmlRenderer类,但它不是静态的。
当我查看AspNetCore源代码时,我在命名空间HtmlHelperComponentExtensions

中看到一个Microsoft.AspNetCore.Mvc.Rendering

MVC?我很困惑我使用的是最新的SDK,该文档只是旧版本吗?

如果我尝试直接导航到组件的路由,我将得到(await Html.RenderComponentAsync())以及与控制台的signalR异常一起直接写到我的文档中。

2 个答案:

答案 0 :(得分:1)

  

当我查看AspNetCore源代码时,我看到一个   命名空间中的HtmlHelperComponentExtensions类   Microsoft.AspNetCore.Mvc.Rendering

     

MVC?我很困惑我使用的是最新的SDK,是简单的文档   老吗?

否,文档不旧... Html.RenderComponentAsync 不是Blazor。 Blazor没有Html帮助器的概念,其文件扩展名是Component文件的.razor或普通类的.cs。

@(await Html.RenderComponentAsync<Counter>(new { IncrementAmount = 10 })) 

以上代码使用Html帮助器方法RenderComponentAsync 呈现一个嵌入在MVC应用程序中的名为 Counter 的组件,并将其值10传递给其IncrementAmount属性。

如果选择服务器端Blazor应用程序,则会在Pages文件夹中为您创建一个名为_Host.cshtml的文件。该文件包含方法RenderComponentAsync,其类型说明符为 App ,这是Blazor应用程序的根元素,因此会预先渲染整个应用程序。

要执行的操作: 确保安装Visual Studio 2019的最新预览版: .NET Core 3.0预览版8需要Visual Studio 2019 16.3预览版2或更高版本

要安装最新的Blazor WebAssembly模板,还运行以下命令:dotnet new -i Microsoft.AspNetCore.Blazor.Templates :: 3.0.0-preview8.19405.7

您应该选择Blazor Server App(服务器端Blazor),然后一切准备就绪。您无需添加其他任何内容。

答案 1 :(得分:0)

问题是你想在错误的情况下使用 Html.RenderComponentAsync 是它不起作用的原因,而且你可能无法继续。您的实际问题是您希望在完整的 blazer 应用程序的情况下在另一个 razer 组件或 blazer 页面中显示 Razer 组件。此时,解决方案是,而不是这样做

@(await Html.RenderComponentAsync<Counter>(new { IncrementAmount = 10 })) 

就这样做

\<Counter IncrementAmount = 10/>