Razor组件标记帮助程序实际上没有加载Razor部件



我一直在按照本指南中的步骤在我的Razor应用程序中设置Blazor组件。我完成了从";准备应用程序"部分,修改_Layout.cshtml&启动.cs文件并添加_Imports.razor文件。为了测试这一点,我只是想实现一个基本的计数器组件。

我将以下代码添加到MyApp/Components/Counter.razor:

<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
[Parameter]
public int InitialValue { get; set; }
private void IncrementCount() => currentCount++;
protected override void OnParametersSet()
{
currentCount = InitialValue;
}
}

然后在MyApp/Pages/Counter.cshtml中,我有这样的:

@page
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.AspNetCore.Components
@using Microsoft.AspNetCore.Components.Web
@using System.Net.Http
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.JSInterop
@using MyApp
@using MyApp.Components
//This does not work--it appears exactly like this in the HTML when the page loads
<component type="typeof(Counter)" render-mode="ServerPrerendered" />
//this works as expected and loads the razor component
@(await Html.RenderComponentAsync<Counter>(RenderMode.ServerPrerendered))

注意,我从_Imports.razor文件中复制了所有using指令,看看这是否解决了问题,但没有什么不同。我的理解是RenderComponentAsync函数已经过时;部件";标签助手是当前使用剃须刀组件的方式。我也更喜欢使用这种语法,因为传递参数更容易。有人知道我为了让它发挥作用而错过了什么吗?

好吧,在处理了几个小时之后,我意识到我的应用程序在Net Core 3.0上,而标签助手只在3.1+中可用。更新MyApp.csproj以获得3.1,而不是修复它:

<TargetFramework>netcoreapp3.1</TargetFramework> 

相关内容

  • 没有找到相关文章

最新更新