asp.net
2013-03-05 53 views 2 likes 
2

我遇到的問題是顯示從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> 
+1

您是否驗證了代碼生成的HTML是什麼? – 2013-03-05 15:52:20

+0

看到換行符,但它們不會被
替代。我猜測這是因爲休息時間是在前面的文本框中用回車鍵完成的,生成的字符不包含在'Environment.NewLine'中,因此'.Replace'缺失。 – Crimius 2013-03-05 16:04:46

+0

顯然問題在於你從數據庫中檢索的字符串沒有以'Environment.NewLine'表示的格式中的新行字符。也許你可以複製檢索到的字符串或在Debugger中查看它的內容,以查看代表NewLine的字符。可能沒有 – 2013-03-05 16:25:10

回答

1

正如Augustin Meriles在他的評論中所說的,問題在於,打入多行文本框內的回車並不使用包含在Environment.NewLine中的新行字符。一些調查顯示它寫在vbCrvbLf而不是使用vbCrLf。知道這一點,改變我的替換方法解決了它。

<asp:Label ID="CommentLabel" runat="server" Text='<%# (Eval("Comment")).Replace(vbCr, "").Replace(vbLf, vbCrLf).Replace(Environment.NewLine, "<br />") %>' /> 

這實現了整個視圖中公認和統一的換行符。

0

關注你的頁面生成的HTML代碼,你會看到這樣的事情:

<table id="GridView1"> 
<tr> 
<td> 
hello<br/>hello 
</td> 
</tr> 
</table> 

,但如果你轉換GridView的(或其他控件)列類型爲模板字段,您將看到如下所示的內容:

<table id="GridView1"> 
<tr> 
<td> 
<span id="GridView1_Label1_0">hello <br/>hello</span> 
</td> 
</tr> 
</table> 

而n ow有它的換行符!總而言之,您只需將您的列轉換爲模板字段。

相關問題