如何在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
相关产品推荐
相关产品推荐

