.net 8 中的服务器端 Blazor 组件,@onclick 事件未触发

nii*_*ico 2 asp.net-core blazor blazor-server-side .net-8.0 blazor-auto

在 .net 7 中的 Blazor 服务器中,我可以在 Page.blazor 中执行此操作:

@信息

<button class="btn btn-primary mt-2 btn-block" @onclick="SendMessage">发送消息

@code { 公共字符串消息 { 获取;放; }

private async Task SendMessage()
{
    message = "Hello";
}
Run Code Online (Sandbox Code Playgroud)

}

当您单击该按钮时,它会在页面上输出“Hello”。

但是,在 .net 8 中,在服务器端 Page.blazor 中的“Blazor Web 应用程序”(自动、服务器与 Web Assembly 混合)中,此按钮不起作用。

EditForm 中的按钮确实可以工作,但我不想使用它,我只想单击按钮来触发事件。

为什么这在 .net 8 中不起作用?我该如何做到这一点?

谢谢

小智 6

渲染模式将是Static Server默认的,这是相关的文档

添加 @attribute [RenderModeInteractiveServer]到你的组件中

或者

在整个应用程序的 app.razor 中添加以下代码

@using static Microsoft.AspNetCore.Components.Web.RenderMode
.....
<Routes @rendermode="InteractiveServer" />
Run Code Online (Sandbox Code Playgroud)

  • `@attribute` 将被弃用,因为 `@renderedmode` 是推荐使用的关键字 (2认同)