使用 ASP.Net 在 HTML 中显示格式化文本(来自数据库)

Posted

技术标签:

【中文标题】使用 ASP.Net 在 HTML 中显示格式化文本(来自数据库)【英文标题】:Displaying formatted text (from database) in HTML using ASP.Net 【发布时间】:2012-10-26 08:28:52 【问题描述】:

我有一个存储在数据库列中的格式化文本,如下所示。使用 SSIS 发送电子邮件时会保留此格式。但是,当我使用网页显示它时,格式不会保留 - 它是单行的。

通过保留格式在 html 中显示它的最佳方式是什么?

注意:我们需要在没有任何第三方控制的情况下实现这一点。但是我们可以使用标准的 ASP.Net 控件

UPDATE Report_Type SET report_template_txt = 

'Updates:   
-----------------
        Transactions Received for 10 


Adjustments :  
---------------------------


Adjustment holds 

        Holds past 1 month – 5'

HTML 源代码和渲染:

参考:

    save html-formatted text to database

    database text with html formatting, how to pull it into my asp.net page

    .NET: How to display string as a formatted HTML?

    HTML Decoding within textarea

【问题讨论】:

您的参考文献以错误的方式看待问题。您有非 HTML 格式的文本,当呈现到网页时显示为单行,因此您需要转换为 HTML。您链接到的参考资料向您展示了如何获取数据库中已有的 HTML 格式文本,并将其呈现在文本框/纯文本电子邮件等中...... @RemarkLima 我们不能使用任何编码技术正确渲染它吗? 不,因为 HTML 本身不是编码,它是 unicode / ascii 编码的纯文本,带有相关标记以允许其呈现。另一种看待它的方式,如果您想将数据转换为 XML,如果没有要输出的 XML 模式,您如何做到这一点? HTML 标记是此实例中的模式。我很乐意对此进行更正! 【参考方案1】:

你需要用<br />标签替换换行符:

string _outputText; // = Some query to get the string
_outputText = _outputText.replace(Environment.NewLine, "<br />");

// Output - Assign the string to whereever, or however suits now it's HTML friendly
Response.Write(_outputText); // Or asssign to literal etc...
lblSomeLabel.text = _outputText;

您可能还希望用不间断的空格替换空格,如下所示:

_outputText = _outputText.Replace(" ", "&nbsp;");

那么您可能还希望使用固定宽度的字体,例如 courier 或 courier-new,以便格式一致。

【讨论】:

以上是关于使用 ASP.Net 在 HTML 中显示格式化文本(来自数据库)的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET / HTML - 使用光标时的文本区域光标位置

Asp.Net Core - 在文本区域中显示字符串列表值?

使用 ASP.net 更改 HTML 文本区域中的字体名称和大小

[ASP.NET][C#]下载文件时中文文件名出现乱码

ASP.NET MVC3 - 带有@Html.EditorFor 的文本区域

ASP.NET MVC Html.Encode - 新行