I am trying to pass the result of the SQL Server exception to the client using the RegisterStartUpScript MS ScriptManager method in .NET 3.5. This works fine for some errors, but when the exception contains single quotes, the warning does not work.
I do not want to just avoid single quotes. Is there a standard function that I can call to avoid any special characters for use in JavaScript?
string scriptstring = "alert('" + ex.Message + "');"; ScriptManager.RegisterStartupScript(this, this.GetType(), "Alert", scriptstring , true);
EDIT
Thanks @tpeczek, the code almost worked for me :), but with a little correction (dropping single quotes) this works.
I have included my modified version here ...
public class JSEncode { /// <summary> /// Encodes a string to be represented as a string literal. The format /// is essentially a JSON string. /// /// The string returned includes outer quotes /// Example Output: "Hello \"Rick\"!\r\nRock on" /// </summary> /// <param name="s"></param> /// <returns></returns> 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 '\\': 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(); } }
As mentioned below - source: here
Rich Andrews May 27 '10 at 11:45 a.m. 2010-05-27 11:45
source share