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

发布于 2024-11-09 05:39:01 字数 339 浏览 0 评论 0原文

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

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

但是,我注意到标签中没有使用像换行符这样的用户输入。它只是显示为空白。

我已经完成了此操作

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

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

这是最好的方法吗?或者是否有一种通用方法可以将 newLines、制表符等所有不可见的格式化内容转换为 HTML 标签?

I have some user input that I am outputting to a label.

I have used HTML.Encode in order to show the input in the way the user entered it (ignoring as a html tag).

However, I have noticed that the user input like New Line are not using in the label. It's simply displayed as white space.

I've done this

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

which seems to now be displaying the right input.

Is that the best way to do this? Or is there like a common method that can convert newLines, tabs, etc. all of the invisible formatting things into HTML tags?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迟到的我 2024-11-16 05:39:01

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

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

对于制表符,您可以使用 4 个不间断空格。:

lbl.Text = lbl.Text.Replace("\t", "    ")

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

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

请记住在添加像
这样的标记之前先对文本进行编码。您有意要渲染的内容。

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

I don't know of any other way. What I usually do (in case you have a single "\n" or a "\r\n" combo) is replace all "\r\n" first, then any single "\n" last.

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

For tabs you can use 4 non-breaking spaces.:

lbl.Text = lbl.Text.Replace("\t", "    ")

To preserve any spacing (as html will aggregate multiple continuous spaces into a single space) use:

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

Remember to Encode your text first before adding in markup like <br /> that you intentionally want to render.

You could also use a TextBox, set it's MultiLine property to "true" and Enabled to "false" if you want to display the information with the original carriage returns without resorting to inserting markup. I think the label is the best choice though.

用心笑 2024-11-16 05:39:01

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

If possible, just use a Multiline Textbox instead of label.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文