日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

ASP.NET 动态输出Javascript 文本格式换行问题 [ASP.NET | C# | Response]

發(fā)布時(shí)間:2025/3/20 C# 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET 动态输出Javascript 文本格式换行问题 [ASP.NET | C# | Response] 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、普通輸出問(wèn)題分析、測(cè)試

??????????1.?????我們先來(lái)看一段代碼:

????///?<summary>
????
///?連接接數(shù)據(jù)庫(kù)
????
///?</summary>
????
///?<param?name="sender"></param>
????
///?<param?name="e"></param>
????protected?void?btnConnect_Click(object?sender,?EventArgs?e)
????{
????????
try
????????{
????????????
///此處填寫(xiě)連接數(shù)據(jù)庫(kù)的代碼
????????}
????????
catch?(Exception?ex)
????????{
????????????Response.Write(Alert(
string.Concat("連接失敗!!出錯(cuò)原因:",?ex.Message)));
????????}
????}

????
///?<summary>
????
///?彈出信息
????
///?????<script?language="javascript"?type="text/javascript">
????
///?????????alert(msg);
????
///?????</script>
????
///?</summary>
????
///?<param?name="msg"></param>
????
///?<returns></returns>
????public?static?string?Alert(string?msg)
????{
????????
return?Javascript(string.Concat("alert('",msg,"');"));
????}

????
///?<summary>
????
///?輸出Javascript代碼
????
///?????<script?language="javascript"?type="text/javascript">
????
///?????????alert("彈出框例子!");
????
///?????</script>
????
///?</summary>
????
///?<param?name="context"></param>
????
///?<returns></returns>
????public?static?string?Javascript(string?context)
????{
????????
return?string.Concat("<script?language=\"javascript\"?type=\"text/javascript\">",?context,?"</script>");?;
????}

??????????說(shuō)明分析:這里調(diào)用方法btnConnect_Click讓他衡失敗,比如連接字符串錯(cuò)誤,這里假設(shè)連接字符串為:Data Source=.\;Initial Catalog=test;User ID=sa;Password=sa??。那么調(diào)試時(shí)ex.Message信息會(huì)顯示"無(wú)法打開(kāi)登錄 'test' 中請(qǐng)求的數(shù)據(jù)庫(kù)。登錄失敗。\r\n用戶 'sa' 登錄失敗。",那么現(xiàn)在我可以很肯定的告訴你,你直接輸出肯定會(huì)報(bào)Javascript錯(cuò)誤,顯示"?確實(shí)')'?",跟蹤發(fā)現(xiàn)它輸出的字符串如下:

<script?language="javascript"?type="text/javascript">alert('連接失敗!!出錯(cuò)原因:無(wú)法打開(kāi)登錄?'test'?中請(qǐng)求的數(shù)據(jù)庫(kù)。登錄失敗。
用戶?
'sa'?登錄失敗。');</script>

???????????我們把這代碼直接復(fù)制到ASPX頁(yè)面里,果然報(bào)錯(cuò),而且錯(cuò)誤也比較明顯了,alert輸出的信息不在一行上,也不支持C# 的'@'?,問(wèn)題就出在這里了!!

二、解決辦法[參考帖子:http://topic.csdn.net/u/20080505/15/3b9c038d-f82d-429f-b093-00e92fdca295.html]

???????????修改后的代碼如下,Javascript方法不變,僅僅修改Alert方法,代碼如下:

????????///?<summary>
????????
///?彈出信息
????????
///?????<script?language="javascript"?type="text/javascript">
????????
///?????????alert(msg);
????????
///?????</script>
????????
///?</summary>
????????
///?<param?name="msg"></param>
????????
///?<returns></returns>
????????public?static?string?Alert(string?msg)
????????{
????????????StringBuilder?html?
=?new?StringBuilder();
????????????msg?
=?msg.Replace("'","?");
????????????html.AppendLine();
????????????html.Append(
"???var?msg?=?'';");
????????????html.AppendLine();
????????????
for?(int?i?=?0,?j?=?msg.Length;?i?<?j;)
????????????{
????????????????
if?(i?+?10?<=?j)
????????????????{
????????????????????html.Append(
"msg+='");
????????????????????html.Append(msg.Substring(i,?
10).Replace(System.Environment.NewLine,?string.Empty));
????????????????????html.Append(
"';");
????????????????????html.AppendLine();
????????????????????i?
+=?10;
????????????????}
????????????????
else
????????????????{
????????????????????html.Append(
"msg+='");
????????????????????html.Append(msg.Substring(i).Replace(System.Environment.NewLine,?
string.Empty));
????????????????????html.Append(
"';");
????????????????????html.AppendLine();
????????????????????
break;
????????????????}
????????????}
????????????html.Append(
"alert(msg);");
????????????
return?Javascript(html.ToString());
????????}

??????????代碼說(shuō)明:大家注意紅色的代碼部分,是代碼的關(guān)鍵,替換信息內(nèi)所含的換行,自己手動(dòng)增加換換行符號(hào),并且拼接字符串,防止字符串過(guò)長(zhǎng)。測(cè)試后,跟蹤調(diào)試輸出字符串如下:

<script?language="javascript"?type="text/javascript">
???
var?msg?=?'';
msg
+='連接失敗!!出錯(cuò)原因';
msg
+=':無(wú)法打開(kāi)登錄??t';
msg
+='est??中請(qǐng)求的數(shù)';
msg
+='據(jù)庫(kù)。登錄失敗。';
msg
+='用戶??sa??登錄';
msg
+='失敗。';
alert(msg);
</script>

? ??本文轉(zhuǎn)自博客園農(nóng)民伯伯的博客,原文鏈接:ASP.NET 動(dòng)態(tài)輸出Javascript 文本格式換行問(wèn)題 [ASP.NET | C# | Response],如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原博主。

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的ASP.NET 动态输出Javascript 文本格式换行问题 [ASP.NET | C# | Response]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。