我遇到的問題是顯示從SQL數據庫中拉出的新行字符到DataList
或類似的控件。我在插入字符時保留了字符,並且快速的SELECT
語句顯示換行符。但是,當我將數據拉入數據列表時,它會顯示空格而不是新行。目前的代碼看起來是這樣的:在綁定標籤中顯示來自SQL的換行符
<asp:Label ID="CommentLabel" runat="server" Text='<%# Eval("Comment").ToString().Replace(Environment.NewLine, "<br />") %>' />
我見過建議使用Server.HTMLEncode
爲好,我想,在這樣的情況下使用它不過用一個例子沒有,我嘗試在它具有產生了沒有明顯的區別,如:
<asp:Label ID="CommentLabel" runat="server" Text='<%# Server.HTMLEncode(Eval("Comment").ToString()).Replace(Environment.NewLine, "<br />") %>' />
我錯過了一些難題嗎?
編輯:通過在多行文本框內輸入創建新行。我不確定這是否與Environment.Newline
中包含的字符不同,但生成的HTML顯示<span>
標籤內部有適當的換行符,但沒有<br />
標籤,所以我猜測它不同。如果是這樣,那麼需要替換的適當角色是什麼?
EDIT2:代碼的項目模板
<ItemTemplate>
<tr style="font-weight:bold">
<td>
Comment ID: <asp:Label ID="CommentIDLabel" runat="server" Text='<%# Eval("CommentID") %>' />
Commenter: <asp:Label ID="CommenterLabel" runat="server" Text='<%# Eval("Username") %>' />
Comment Date: <asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
</td>
</tr>
<tr>
<td>
<asp:Label ID="CommentLabel" runat="server" Text='<%# (Eval("Comment")).Replace(Environment.NewLine, "<br />") %>' />
</td>
</tr>
</ItemTemplate>
您是否驗證了代碼生成的HTML是什麼? – 2013-03-05 15:52:20
看到換行符,但它們不會被
替代。我猜測這是因爲休息時間是在前面的文本框中用回車鍵完成的,生成的字符不包含在'Environment.NewLine'中,因此'.Replace'缺失。 – Crimius 2013-03-05 16:04:46
顯然問題在於你從數據庫中檢索的字符串沒有以'Environment.NewLine'表示的格式中的新行字符。也許你可以複製檢索到的字符串或在Debugger中查看它的內容,以查看代表NewLine的字符。可能沒有 – 2013-03-05 16:25:10