来自CodeBehind的ASP.NET警报换行符

时间:2013-03-06 19:04:58

标签: javascript asp.net newline alert

我在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样式。

为什么?

3 个答案:

答案 0 :(得分:6)

使用@符号或双\\来转义斜杠

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

OR

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

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

More info on Client.RegisterStartupScript here

答案 1 :(得分: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换行符。

答案 2 :(得分:0)

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

这将在asp.net

中正常工作