组件的Blazor服务器OnAfterRenderAsync未启动



我正在尝试将blazor服务器集成到现有的MVC项目中,对于让我的组件调用OnAfterRenderAsync()的要求有点困惑。

我有以下简单的Index.razor测试页面,由以下部分组成:

@page "/Index"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
protected override Task OnAfterRenderAsync(bool firstRender)
{
return base.OnAfterRenderAsync(firstRender);
}
private void IncrementCount()
{
currentCount++;
}
}

如果我直接导航到/Index,那么OnAfterRenderAsync方法就可以了。但是,如果我像这样将Index.razor作为cshtml中的组件呈现:@(await Html.RenderComponentAsync<Index>(RenderMode.ServerPrerendered ))

OnAfterRenderAsync()不被命中。

我的Startup.cs中有MapBlazorHub()_Host.cshtml中有<script src="~/_framework/blazor.server.js"></script>

我是否在某个地方错过了一步,或者这种行为是Blazor Server中设计的吗?如果是,是否有一些变通方法?我需要一些可重用的blazor组件,以便能够使用MVC项目中实现的JS库,所以我需要这些组件能够调用OnAfterRenderAsync(),而无需直接访问页面URL

在检查了开发人员工具中的源代码后,我发现组件中不存在_framework文件夹。尽管我可以导航到https://myurl/_framework/blazor.server.js看到该文件存在于我的项目中,我的组件无法访问它。将脚本标记<script src="~/_framework/blazor.server.js"></script>直接添加到呈现我的Blazor组件的cshtml文件中解决了我的问题。

相关内容

  • 没有找到相关文章

最新更新