html - 如何在不关闭 HTML 编码的情况下在 asp GridView BoundField 中正确显示换行符

标签 html asp.net gridview web frontend

我需要在 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/

相关文章:

asp.net - 使用 ASP.NET 与 Access 数据库的 CRUD

javascript - 在 gridview 行鼠标悬停时,我想在另一个标签中显示行数据

html - IE8 重复包装 <pre> 标签中的文本

javascript - 使用 angularjs 无法从 json 文件获取数据

asp.net - Signalr 在 IIS 7.5 和 Edge/IE 中错误地反序列化我的对象,foreverFrame 损坏了?

c# - 在 azure 上移动 asp.net Web 表单网站,无需再次编码即可使用 azure blob 存储

html - Bootstrap 4 - 在 flexbox 子容器上对齐内容中心(覆盖 flex 父容器)

javascript - 将 JS 转换为自动加载

android - 在android中随机排列图像

c# - 如何在 GridView 中获取单元格值(不使用单元格索引)