我需要在 asp GridView 中的 asp BoundField 的内容中显示换行符。我最初有\r\n,但页面完全忽略了这个换行符。我做的第二件事是用字符串中的换行符替换我的换行符,但页面只显示文字“”,只要我在字符串中有这个。我在技术上尝试的最后一件事是成功的,我通过在字段中放入我的字符串,并将元素的 HTML 编码设置为“false”来实现这一点。我对这个解决方案的问题是,我听说这会导致安全问题。如何在不将 HTML 编码设置为 false 的情况下在这些字段中设置换行符。
最佳答案
默认情况下,HTML 将换行符、制表符和空格视为常见的空格,并将多个空格字符折叠为单个空格以进行渲染。因此,在 HTML 中包含换行符通常不会影响文本在浏览器中的呈现方式。有关此主题的更多信息和背景,请参阅之前的 question ,其中有一些非常有用的评论。
但是,如果您希望文本中的换行符在浏览器中呈现为换行符,您可以在纯 CSS 中实现这一点,而无需关闭 HTML 编码或引入任何安全问题。 white-space CSS property是标准的并且长期以来一直被所有主要浏览器支持,并且使您能够指示浏览器按原样呈现换行符。
更改 ASP.Net 生成的 HTML GridView
可以通过使用 <ItemStyle>
来包含 CSS 样式。标记如下所示:
<style>
.preformatted
{
white-space: pre-line;
}
</style>
<asp:GridView runat="server" ...>
<Columns>
<asp:BoundField ...>
<ItemStyle CssClass="preformatted"/>
</asp:BoundField>
</Columns>
</asp:GridView>
而不是使用
white-space: pre-line;
你也可以试试 white-space: pre;
,但这会削弱浏览器使文本流动以适应可用空间的能力,因此如果您的文本不包含足够的换行符,可能会导致您的网格列变得太宽。
关于html - 如何在不关闭 HTML 编码的情况下在 asp GridView BoundField 中正确显示换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44467086/