无法渲染 blazor 组件
Can't render blazor component
使用 visual studio 2019 预览版 2.0,.NET 核心 SDK 3.0.100-preview8-013656。服务器端 blazor 应用程序。
The blazor docs 说渲染组件的方式是调用Html.RenderComponentAsync
。我在任何地方都找不到这个静态 Html
class。
在 SDK 目录中,当我查看 Microsoft.AspNetCore.Components.dll 时,我看到它有一个 HtmlRenderer
class 和这样的方法,但它不是静态的。
当我查看 AspNetCore 源代码时,我在命名空间 Microsoft.AspNetCore.Mvc.Rendering
中看到一个 HtmlHelperComponentExtensions
class
MVC?我很困惑。我用的是最新的SDK,是不是文档太旧了?
如果我尝试直接导航到我的组件的路由,我只会将 (await Html.RenderComponentAsync()) 连同 signalR 异常直接写入我的文档到控制台。
When I look at AspNetCore source, I see an
HtmlHelperComponentExtensions class in namespace
Microsoft.AspNetCore.Mvc.Rendering
MVC? I'm very confused. I'm using the latest SDK, is the doc simply
old?
不,文档并不旧...Html.RenderComponentAsync 不是 Blazor。 Blazor 没有 Html 帮助程序的概念,它的文件扩展名是 .razor(组件文件)或 .cs(普通 class)。
@(await Html.RenderComponentAsync<Counter>(new { IncrementAmount = 10 }))
上面的代码使用 Html 辅助方法 RenderComponentAsync
呈现一个名为 Counter 的组件嵌入在 MVC 应用程序中,将值 10.
传递给它的 IncrementAmount 属性
如果您 select 服务器端 Blazor 应用程序,则会在 Pages 文件夹中为您创建一个名为 _Host.cshtml 的文件。此文件包含类型说明符为 App 的方法 RenderComponentAsync,它是 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
您应该 select Blazor Server App(服务器端 Blazor),然后一切就绪。您无需添加任何其他内容。
问题是你想错误地使用 Html.RenderComponentAsync 是它不起作用的原因,你可能无法继续。你的实际问题是你想在另一个 razer 组件或 blazer 页面中显示一个 Razer 组件,以防完整的 blazer 应用程序。此时,解决方案是,而不是这样做
@(await Html.RenderComponentAsync<Counter>(new { IncrementAmount = 10 }))
就这样做
\<Counter IncrementAmount = 10/>
使用 visual studio 2019 预览版 2.0,.NET 核心 SDK 3.0.100-preview8-013656。服务器端 blazor 应用程序。
The blazor docs 说渲染组件的方式是调用Html.RenderComponentAsync
。我在任何地方都找不到这个静态 Html
class。
在 SDK 目录中,当我查看 Microsoft.AspNetCore.Components.dll 时,我看到它有一个 HtmlRenderer
class 和这样的方法,但它不是静态的。
当我查看 AspNetCore 源代码时,我在命名空间 Microsoft.AspNetCore.Mvc.Rendering
HtmlHelperComponentExtensions
class
MVC?我很困惑。我用的是最新的SDK,是不是文档太旧了?
如果我尝试直接导航到我的组件的路由,我只会将 (await Html.RenderComponentAsync()) 连同 signalR 异常直接写入我的文档到控制台。
When I look at AspNetCore source, I see an HtmlHelperComponentExtensions class in namespace Microsoft.AspNetCore.Mvc.Rendering
MVC? I'm very confused. I'm using the latest SDK, is the doc simply old?
不,文档并不旧...Html.RenderComponentAsync 不是 Blazor。 Blazor 没有 Html 帮助程序的概念,它的文件扩展名是 .razor(组件文件)或 .cs(普通 class)。
@(await Html.RenderComponentAsync<Counter>(new { IncrementAmount = 10 }))
上面的代码使用 Html 辅助方法 RenderComponentAsync 呈现一个名为 Counter 的组件嵌入在 MVC 应用程序中,将值 10.
传递给它的 IncrementAmount 属性如果您 select 服务器端 Blazor 应用程序,则会在 Pages 文件夹中为您创建一个名为 _Host.cshtml 的文件。此文件包含类型说明符为 App 的方法 RenderComponentAsync,它是 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
您应该 select Blazor Server App(服务器端 Blazor),然后一切就绪。您无需添加任何其他内容。
问题是你想错误地使用 Html.RenderComponentAsync 是它不起作用的原因,你可能无法继续。你的实际问题是你想在另一个 razer 组件或 blazer 页面中显示一个 Razer 组件,以防完整的 blazer 应用程序。此时,解决方案是,而不是这样做
@(await Html.RenderComponentAsync<Counter>(new { IncrementAmount = 10 }))
就这样做
\<Counter IncrementAmount = 10/>