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

Blazor行内代码块@{}报错、{}作用域异常问题求助

问题原因

该问题由Razor语法的固有解析规则导致,并非Blazor运行故障:

  • 无@前缀的{}会被默认识别为普通HTML文本,不会作为C#代码的作用域边界,因此跨裸{}的C#变量无法被解析器识别,触发作用域断裂报错。
  • 行内直接使用@{}不符合语法规则:@{}是多语句C#代码块的声明语法,仅可用于编写逻辑语句,不支持直接输出行内值,因此在行内输出场景下使用会触发语法报错。
  • 参考截图中未出现断裂是因为对应大括号已经处于@if/@foreach等已声明的C#代码上下文内,本身就被识别为代码作用域边界,无需额外加@。

可行解决方案

  • 行内输出单个C#变量或表达式时,直接使用@变量名或@(表达式)语法即可,无需使用@{}:
    <span>@UserName</span>
    <span>@(User.Age + 5)</span>
    
  • 需要声明局部作用域变量时,在@{}代码块内使用<text>标签或@:前缀标记要输出的HTML/文本内容,避免解析混淆:
    @{
        var tempContent = "临时生成的内容";
        // 用text标签包裹输出内容
        <text><p>@tempContent</p></text>
        // 单行输出可直接用@:前缀
        @:<p>@tempContent</p>
    }
    
  • 如需将{}作为普通文本展示,不需要作为代码作用域时,转义@符号或者将大括号包裹在普通HTML标签内即可:
    <span>@@{ 普通大括号文本 }</span>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:51:00