如何通过ScriptManager.RegisterStartupScript从C#向JS传递含特殊字符的参数
问题原因
- C#中字符串里的
\\是转义写法,实际param变量存储的仅为1个反斜杠\ - 直接拼接进JS代码时,这个
\会被JS识别为转义符,不会作为普通字符保留,因此JS端拿到的参数丢失了反斜杠。
解决方案
使用.NET内置的JS字符串编码方法处理参数,避免手动拼接带来的转义问题:
- .NET Framework 环境下使用
HttpUtility.JavaScriptStringEncode方法,该方法会自动将反斜杠、引号、特殊符号转义为合法的JS字符串格式。
修正后的代码如下:
string param = "sm~aEkv{yEb@~IX`GVhG@\\BZ@bA?L"; // 转义参数为JS可识别的字符串格式 string encodedParam = HttpUtility.JavaScriptStringEncode(param); string jsFunction = "viewPathOnMap(\"" + encodedParam + "\");"; ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", jsFunction, true);
- .NET Core / .NET 5+ 环境下可使用
System.Text.Encodings.Web.JavaScriptEncoder.Default.Encode(param)完成相同的转义操作。
内容的提问来源于stack exchange,提问作者Adham Enaya
相关产品推荐
相关产品推荐

