6

私は Page.aspx.cs ファイルにそのようなコードを持っています:

void btnSessionCreate_Click(object sender, EventArgs e)
{
        if (Session["user"] == null)
        {
            Session["user"] = Guid.NewGuid().ToString();
            Response.Redirect("/");
        }
        else if (Session["user"] != null)
        {
            string userBrowser = Request.UserAgent.ToString();
            string sessionId = Session["user"].ToString();

            Response.Write("<script>alert('" + sessionId + "\r\n" + userBrowser + "');</script>");
        }
 }

主な問題は、Response.Write() メソッドの「\r\n」部分です。データを改行で区切りたいのですが、できません。

"\r\n" がない場合、スクリプトは適切に警告しますが、コードに存在する場合、何も警告せず、CSS スタイルがリセットされます。

なんで?

4

3 に答える 3

7

@記号またはダブルを使用し\\てスラッシュをエスケープします

string script = String.Format(@"<script>alert('{0}\r\n{1}');</script>", sessionId, userBrowser);

また

string script = String.Format("<script>alert('{0}\\r\\n{1}');</script>", sessionId, userBrowser);

Client.RegisterStartupScript(this.GetType(), "myscript", script, true);

Client.RegisterStartupScript の詳細はこちら

于 2013-03-06T19:15:28.207 に答える
1

をエスケープするだけなので、 JavaScript に出力すると次の\ようになります。\

Response.Write("<script>alert('" + sessionId + "\\r\\n" + userBrowser + "');</script>");

または:

Response.Write("<script>alert('" + sessionId + @"\r\n" + userBrowser + "');</script>");

上記の行で C# コンテキストにいるため、\r\nによって出力される必要がある新しい行として解釈されResponse.Writeます。それはあなたが望むものではありません。リテラルを出力したい\r\nので、それらは JavaScript の改行として解釈されます。

于 2013-03-06T19:06:48.690 に答える
0

Response.Write("alert('" + sessionId + "\n" + userBrowser + "');");

これはasp.netで正常に動作します

于 2015-06-08T07:01:37.647 に答える