我在显示从 SQL 数据库中提取到DataList
或类似控件中的换行符时遇到问题。我在插入字符时会保留这些字符,并且快速SELECT
语句会显示换行符。但是,当我将数据拉入数据列表时,它会显示空格而不是换行符。代码当前如下所示:
<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 />") %>' />
我在这里错过了一些难题吗?
编辑:在多行文本框中通过 Enter 创建新行。我不确定这是否会产生与包含的字符不同的字符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>