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

如何在C#的StringBuilder.AppendFormat()中传入带大括号的JS函数字符串

在C#的StringBuilder.AppendFormat中处理带大括号的JavaScript字符串

在C#里,StringBuilder.AppendFormat(和string.Format逻辑一致)会把单个{}识别为格式占位符,所以你的JavaScript代码里自带的大括号必须用两个连续大括号转义,否则会触发格式异常。同时,要把需要动态替换的内容保留为单个大括号的占位符格式(比如{0}),才能正确传入参数。

修改后的代码示例

假设你要把.NET对象序列化为JSON字符串替换占位符,代码如下:

using System.Text;
// 若使用Newtonsoft.Json(需通过NuGet安装)
using Newtonsoft.Json;
// 或使用.NET Core/5+自带的System.Text.Json
// using System.Text.Json;

// 示例数据对象
var productData = new {
    Id = 1,
    Name = "Demo Product",
    Price = 49.99
};

StringBuilder sb = new StringBuilder();

// 转义JS中静态大括号(用{{和}}),保留替换占位符为{0}
sb.AppendFormat(@"<script>
       var vm = new Vue({{
        el: 'main_div',
        data() {{ 
            return {{
                proddetails: [],
            }}
        }},
        created: function () {{
            this.proddetails = {0};
        }},
    }});
</script>", 
// 将.NET对象序列化为合法JSON字符串
JsonConvert.SerializeObject(productData)
// 若用System.Text.Json则替换为:
// JsonSerializer.Serialize(productData)
);

核心要点

  • 转义静态大括号:JavaScript代码里原本的{要写成{{,}要写成}},格式化后会自动还原为单个大括号。
  • 替换占位符:用{0}代表第一个待替换参数(多参数可依次用{1}``{2}等),调用AppendFormat时传入序列化后的JSON字符串,确保JavaScript能正常解析。
  • JSON序列化:必须把.NET对象转为合法JSON格式,否则前端会出现语法错误,根据你的.NET版本选择对应的序列化工具即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:42:18