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 回答