6

新しい行のJavascriptアラートメッセージを追加しようとしています。'\n'と'Environment.NewLine'を試しました。未終了の文字列定数エラーが発生します。何が問題なのか教えていただけますか?助けていただければ幸いです。\ r\nも試しました。

string msg = "Your session will expire in 10 minutes. \n Please save your work to avoid this.";


if (!this.ClientScript.IsStartupScriptRegistered(ID)) 
   this.ClientScript.RegisterStartupScript(GetType(), ID, String.Format("<script language=JavaScript>setTimeout(\'alert(\"{1}\");\',{0}*1000);</script>", sTime, msg));
4

6 に答える 6

17

コードを次のように変更する必要があると思います。

string msg = "Your session will expire in 10 minutes. \\n Please save your work to avoid this.";

そうしないと\n、出力されるコードに実際には改行ではなく改行が含まれることになります。\n

出力コードは次のようになります。

setTimeout('alert("Your Session....
 Please save your work to ....");', 1000);

それよりも:

setTimeout('alert("Your Session....\n Please save your work to ....");', 1000);
于 2012-09-26T14:19:27.953 に答える
3

よくわかりませんが、\nはstring.Formatメソッドでエスケープされていると思います。\\のように。代わりに\\nを使用する必要があります。

編集済み:そして、私がそれを投稿したとき、\\nの最初の\はエスケープされました。xD

于 2012-09-26T14:17:16.527 に答える
2

一見したところ、主な問題は'、アラートの周囲でキャラクターをエスケープしていることだと思います。文字列は二重引用符で定義されているため、この文字をエスケープする必要はありません。

于 2012-09-26T14:17:24.803 に答える
0

文字列の先頭に「@」を追加します-次のように:

string msg = @"Your session ....";
于 2012-09-26T14:14:30.573 に答える
0

コードは正常に見えるので、それ自体に引用符が含まれているメッセージを使用していると推測し'、JS構文エラーを引き起こします。動的テキストをJavascriptコードブロックに挿入するには、JSONを使用してC#文字列をJSで使用できるように「安全」にする必要があります。

SQLインジェクション攻撃に相当するJSを防ぐための頼りになる方法としてJSONを検討してください。

于 2012-09-26T14:15:12.803 に答える
0

最初にを追加する@と役立つはずです。

于 2012-09-26T14:19:23.523 に答える