有没有办法在输出到标签时保留格式?

时间:2011-05-25 00:09:21

标签: c# asp.net html

我有一些用户输入,我输出到标签。

我使用HTML.Encode以用户输入的方式显示输入(忽略为html标记)。

但是,我注意到像New Line这样的用户输入没有在标签中使用。它只是显示为空格。

我已经完成了这个

                msg.Text = msg.Text.Replace(Environment.NewLine, "<br />");

现在似乎正在显示正确的输入。

这是最好的方法吗?或者是否有一种常见的方法可以将newLines,tabs等所有不可见的格式化内容转换为HTML标记?

2 个答案:

答案 0 :(得分:3)

我不知道其他任何方式。我通常做的(如果你有一个“\ n”或“\ r \ n”组合)首先替换所有“\ r \ n”,然后替换任何单个“\ n”。

lbl.Text = lbl.Text.Replace("\r\n", "<br />").Replace("\n", "<br />");

对于标签,您可以使用4个不间断的空格。:

lbl.Text = lbl.Text.Replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;")

要保留任何间距(因为html会将多个连续空格聚合到一个空格中),请使用:

lbl.Text = lbl.Text.Replace("  ", "&nbsp;&nbsp;")//Replace every 2-space pair.

请记住在添加标记之前先对文字进行编码,例如&lt; br /&gt;您有意想要渲染。

您还可以使用TextBox,将其MultiLine属性设置为“true”,如果要使用原始回车符显示信息而不使用插入标记,则将其设置为“false”。我认为这个标签是最好的选择。

答案 1 :(得分:0)

如果可能,只需使用多行文本框而不是标签。