如何在Blazor .NET 8中选择非预渲染的RenderMode.Server模式?
在Blazor .NET 8中启用非预渲染的Server交互模式
.NET 8重构了Blazor的渲染模式体系,原.NET 7中的RenderMode.Server对应新版的InteractiveServer模式,但新版默认开启预渲染。要启用非预渲染的Server交互模式,可以按以下方式配置:
1. 组件/页面级单独配置
直接在组件或页面顶部替换原属性,使用带参数的渲染模式声明:
@rendermode InteractiveServer(prerender: false)
- 效果:组件仅执行一次
OnInitialized/OnInitializedAsync,页面保持完全交互性(如计数器按钮正常工作),不会进行预渲染。
2. 全局默认配置(所有组件生效)
如果希望项目中所有InteractiveServer模式的组件都默认关闭预渲染,可在Program.cs中修改服务配置:
builder.Services.AddRazorComponents() .AddInteractiveServerComponents(options => { // 设置全局默认的非预渲染InteractiveServer模式 options.DefaultRenderMode = InteractiveServerRenderMode.Create(prerender: false); });
- 注意:全局配置后,若个别组件需要预渲染,可单独声明
@rendermode InteractiveServer(默认prerender=true)覆盖全局设置。
关键说明
.NET 8中移除了原[RenderModeServer]属性,替代逻辑为:
- 仅写
@rendermode InteractiveServer:等效于原RenderMode.ServerPrerendered,会执行两次初始化 - 加
prerender: false参数:等效于原RenderMode.Server,仅执行一次初始化 - 不指定任何交互渲染模式:页面默认使用静态渲染模式,无交互能力
内容的提问来源于stack exchange,提问作者Ticu Ionut
相关产品推荐
相关产品推荐

