我在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样式。
为什么?
答案 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);
答案 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
中正常工作