2012-12-19 49 views
0

我有一個多行文本框,充當說明字段。可以通過間隔和返回將大量信息添加到此文本框中。以段落格式。當我稍後將此文本顯示爲Label時,我失去了所有的格式,並且變成了文本牆。有什麼我可以做,以保持原始格式?將文本顯示爲標籤時失去格式化

var customerInfo = GetCustomerInfo(itemid); 

       if (customerInfo != null) 
       { 
        ItemID.Text = customerInfo.ItemID.ToString(); 

        Description.Text = customerInfo.Description; 

       } 

頁面的源代碼看起來像這樣

   This is a test 

this is a test 

this is a test 
1. test 
2. test 
3. test 
4. tes 

標籤/文字看起來像這樣

This is a test this is a test this is a test 1. test 2. test 3. test 4. tes 
+1

你能舉一個你的原始文本的例子嗎?您可以將文本輸出到DIV而不是標籤控件 – AFD

+0

您可以在只讀textarea中顯示文本嗎?還是它必須轉換爲HTML? – dotjoe

+0

@Guffa你能告訴我,如果我做錯了什麼。我試過這個'Description.Text = customerInfo.Description.Replace(「\ r \ n」,「
」).Replace(「\ t」,「       」);'它看起來不起作用 – jackncoke

回答

2

當您顯示HTML格式的文本,它沒有顯示格式,因爲HTML有格式化文本的其他方法。所有格式化字符(換行符,製表符等)都被視爲HTML中的空格,因此它將僅顯示爲大量文本塊。

要顯示HTML格式的文本,你必須翻譯成什麼HTML使用格式化的格式,例如:

label.Text = myText.Replace("\r\n", "<br>").Replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;"); 
+0

因爲你的代表我相信這可能會更好,那麼我建議,是不是雖然? –

+1

這看起來真的很醜;) – MUG4N

+0

@ MUG4N - 是啊我不明白如何手動嘗試替換所有編碼的html比使用內置的解碼器更好 –

1

我不是跟你發佈任何東西出來不太清楚,但這應該幫助

Label1.Text = HttpUtility.HtmlEncode(myStringFromTxtBox); 
+0

I也試過你,它沒有工作,我一定是做錯了什麼.'Description.Text = HttpUtility.HtmlEncode(customerInfo.Description);' – jackncoke

0

的問題是,原文將有回車哪位會根據變化在OS-行分隔符上,但是在HTML中,您需要將它們轉換爲<br />以保持相同的格式。

此外,標籤控件呈現爲跨度。您可能最好使用常規div並在其上設置runat="server"屬性,以便您可以通過編程方式分配內容。

Guffa對其他字符(標籤,空格等)提出了另一個要點,它們都需要被轉換爲與HTML等效的東西。