You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Blazor静态SSR增强导航JS函数中访问Razor属性?

在Blazor静态SSR增强导航JS函数中传递Razor页面属性的方法

针对静态SSR场景下的Blazor增强导航JS函数(onLoad/onUpdate/onDispose),可以通过以下两种方式传递或访问Razor页面的属性值:

方法一:通过PageScript组件的Args参数传递

直接利用PageScript的Args属性将Razor页面的属性封装为对象传递给JS模块,JS函数可直接接收该参数。

修改后的Razor页面代码

@page "/page-with-script"
@using BlazorPageScript

<PageTitle>Enhanced Load Script Example</PageTitle>

<!-- 通过Args传递SomeProp属性 -->
<PageScript Src="./Components/Pages/PageWithScript.razor.js" Args="@new { SomeProp = SomeProp }" />

Welcome to my page.

@code {
    public string SomeProp { get; set; } = "Hello, World!";
}

修改后的JS函数代码

// 在onLoad/onUpdate中接收传递的参数
export function onLoad(args) {
  console.log('Loaded, SomeProp:', args.someProp);
}

export function onUpdate(args) {
  console.log('Updated, SomeProp:', args.someProp);
}

export function onDispose() {
  console.log('Disposed');
}

方法二:通过DOM元素存储属性并读取

将Razor属性值渲染到页面的隐藏DOM元素中,JS函数通过DOM选择器读取该元素的属性值。

修改后的Razor页面代码

@page "/page-with-script"
@using BlazorPageScript

<PageTitle>Enhanced Load Script Example</PageTitle>

<PageScript Src="./Components/Pages/PageWithScript.razor.js" />

<!-- 用隐藏元素存储SomeProp的值 -->
<div id="page-data" data-some-prop="@SomeProp" style="display: none;"></div>

Welcome to my page.

@code {
    public string SomeProp { get; set; } = "Hello, World!";
}

修改后的JS函数代码

export function onLoad() {
  const pageDataEl = document.getElementById('page-data');
  const someProp = pageDataEl.dataset.someProp;
  console.log('Loaded, SomeProp:', someProp);
}

export function onUpdate() {
  const pageDataEl = document.getElementById('page-data');
  const someProp = pageDataEl.dataset.someProp;
  console.log('Updated, SomeProp:', someProp);
}

export function onDispose() {
  console.log('Disposed');
}

内容的提问来源于stack exchange,提问作者gmeister_99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 02:08:23