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

ASP.NET Core Razor中window.onload调用@Model变量报引用错误如何解决

问题原因

该报错的核心是Razor渲染字符串类型的Model属性时,不会自动为输出内容添加JavaScript字符串所需的引号。你的degree属性值为XYZ,渲染到JS代码中时会直接生成如下内容:

console.log('Model degree value -' + XYZ );

JS会把无引号包裹的XYZ识别为变量名,而你的代码中并没有定义名为XYZ的变量,因此抛出未定义的引用错误。

修复方案

有两种常用的修复方式,推荐优先使用第二种避免特殊字符问题:

  1. 手动为Razor变量添加引号
    仅适用于你能确认变量值不含引号、换行等特殊字符的场景:
window.onload = function () {
    console.log('Model degree value -' + '@Model.degree' );
    callJavascriptFunction('@Model.degree');
};
  1. 使用Json.Serialize处理(更安全)
    该方法会自动对字符串做转义处理,兼容包含引号、换行、特殊符号的内容,也支持数字、布尔值、复杂对象等类型的参数传递:
window.onload = function () {
    console.log('Model degree value -' + @Json.Serialize(Model.degree) );
    callJavascriptFunction(@Json.Serialize(Model.degree));
};

如果需要处理属性为null的情况,可以追加空值 fallback:

@Json.Serialize(Model.degree ?? "")

额外注意:你当前的OnGet方法标记了async但没有任何异步操作,可以去掉async关键字修改为同步方法,避免编译器警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:33:02