2011-07-20 42 views
0

我正在將文本從textarea存儲到我的數據庫。這個文本可以包含新的行,特殊字符等。但是我想確保當我使用response.write顯示它時,它確實出現在textarea控件中。我想這樣做的原因是因爲我想給用戶一個打印視圖表單。下面的解決方案不起作用。使用ASP.NET/C#Response.Write從數據庫打印文本爲HTML

e.g

foreach (DataRow row in dview.Table.Rows) 
{ 
Response.Write("<tr>"); 
        Response.Write(String.Format("<td>{0}<br/><br/></td>", row[1].ToString().Replace("\n", "<br/>"))); 
        Response.Write("</tr>"); 

感謝

回答

1

不要那樣做,你會在報價和符號都參與碰到的問題,尤其是。

商店這樣的數據:

HttpUtility.HtmlEncode("<p>Lorem ipsum ...</p>"); //your HTML to encode goes here 

並檢索它像這樣:

myPlaceHolder.Text = HttpUtility.HTMLDecode(myData); 

這裏有HTMLEncode/Decode

+0

有時輸入的數據不包含HTML,並且您希望將其翻譯爲用戶在HTML中輸入時的工作方式。那麼你建議什麼?忽視數據輸入概念的數據輸入? – BradLaney

+0

我不明白。 'HttpUtility.HtmlDecode(HttpUtility.HtmlEncode(myString))= myString' 總是。所以即使他們沒有輸入HTML,數據也會和輸入的一樣。 –

+0

用戶輸入純文本。不通過所見即所得的編輯器。他們進入「你好世界」。你想把它顯示回來,作爲「你好世界」。當輸出與輸入匹配時,你的方法很好,但是當輸出格式與輸入不匹配時,你必須對數據進行修改以使其工作。海報正在請求如何更改輸出格式,而不是輸入。 – BradLaney

1
foreach (DataRow row in dview.Table.Rows) 
{ 
Response.Write("<tr>"); 
       Response.Write(String.Format("<td>{0}<br/><br/></td>", row[1].ToString().Replace(Environment.NewLine, "<br/>"))); 
       Response.Write("</tr>"); 

不要使用 「\ n」 多一點信息始終使用Environment.NewLine

1

你可以顯示一個<pre></pre>塊內的輸出,這將保留所有空白,包括多個空格,換行等

HTML編碼建議所以數據中的任何尖括號不破輸出HTML。