また、誰かが\
値として a を追加すると壊れます。Javascript 文字列を壊す文字をエスケープする必要があります - HttpUtility.JavaScriptStringEncodeがこれを行います:
StringBuilder sb = new StringBuilder();
sb.Append("<script>");
// Store transmission chrome feature.
for(int i=0; i < Transmission.Length; i++)
{
sb.Append("var obj = {text: '" + HttpUtility.JavaScriptStringEncode(Transmission[i][0]) + "',"
+ "value: '" + HttpUtility.JavaScriptStringEncode(Transmission[i][2]) +"'};");
sb.Append("transChromeData.push(obj);");
}
sb.Append("</" + "script>");
this.RegisterStartupScript("Info", sb.ToString());
古いバージョンの .NET の場合は、自分で作成する必要があります。Rick Strahl には、さまざまな JS 文字をカバーする優れた実装があります。
public static string EncodeJsString(string s)
{
StringBuilder sb = new StringBuilder();
sb.Append("\"");
foreach (char c in s)
{
switch (c)
{
case '\"':
sb.Append("\\\"");
break;
case '\\':
sb.Append("\\\\");
break;
case '\b':
sb.Append("\\b");
break;
case '\f':
sb.Append("\\f");
break;
case '\n':
sb.Append("\\n");
break;
case '\r':
sb.Append("\\r");
break;
case '\t':
sb.Append("\\t");
break;
default:
int i = (int)c;
if (i < 32 || i > 127)
{
sb.AppendFormat("\\u{0:X04}", i);
}
else
{
sb.Append(c);
}
break;
}
}
sb.Append("\"");
return sb.ToString();
}