")未按预期工作-6ren"> ")未按预期工作-我不确定为什么以下代码没有按预期工作: litMessage.Text = messageBody.Replace(Environment.NewLine, "") 其中 litMessage 是文字-6ren">
gpt4 book ai didi

asp.net - 在网页上显示文本时,替换(Environment.NewLine, "
")未按预期工作

转载 作者:太空狗 更新时间:2023-10-29 16:50:51 24 4
gpt4 key购买 nike

我不确定为什么以下代码没有按预期工作:

litMessage.Text = messageBody.Replace(Environment.NewLine, "<br/>")

其中 litMessage 是文字控件的名称,messageBody 是字符串变量的名称。

我的目的是将字符串输出到网页上,并用br标签替换换行符,以便它可以正确显示在页面上。但是,没有任何东西被替换。查看页面源代码时,字符串中似乎仍然存在换行符。同样,通过MsgBox 显示字符串时,也能正常显示。我还尝试用 pre 标记包装输出,它也正确显示换行符。

该字符串最初由用户通过使用 asp:Textbox 输入并保存到 MSSQL 数据库中。它使用 asp:Literal 控件检索并显示在另一个网页上。字符串在提交之前唯一发生的事情是它被修剪(即 textbox.Text.Trim())

也许有什么我没有考虑到的?

编辑 #1: 由于时间限制,我决定用 pre 标签将文本包裹起来。这是一个可以接受的解决方法,因为它保留了换行符。不幸的是,它并没有解释为什么代码首先不起作用。与此同时,在找到合适的答案之前,我会先不回答这个问题。

编辑 #2: 在下面找到并回答了解决方案。已将 UpdatePanel 标记添加到问题中以供将来引用。

最佳答案

在重新审视这个问题后,我发现是更新面板导致了这个问题。

在进行更多测试后,我使用以下代码查看了字符串中包含的内容:

MsgBox(textbox.Text.Contains(vbCr))
MsgBox(textbox.Text.Contains(vbCrLf))
MsgBox(textbox.Text.Contains(vbNewLine))
MsgBox(textbox.Text.Contains(Environment.Newline))

所有四个语句都返回 false。这在发送到数据库之前的字符串以及从数据库检索的字符串上进行了测试。

从我的角度来看,标记中必须有一些东西可以删除换行符。起初,我认为 Literal、Textbox 和 Label 控件在后面的代码中检索时对换行符做了一些有趣的事情。事实并非如此(如果 Microsoft 让这种情况发生,那就太奇怪了)。

进一步梳理代码,我发现所有这些控件都在一个 UpdatePanel 中。想起我以前对 UpdatePanels 的负面体验,我认为这可能就是罪魁祸首。我删除了它,你瞧,代码中的换行符并没有消失。我刚刚发布的代码全部返回 true。

两个页面都有用于提交文本和在 UpdatePanel 中显示文本的控件。我发现从页面检索文本时换行符消失了。在页面上显示文本时,UpdatePanel 不会以任何方式更改字符串。以下代码最终运行良好:

litMessage.Text = messageBody.Replace(Environment.NewLine, "<br/>")

尽管我仍然不确定为什么在使用 pre 标记甚至使用 javascript 警告框显示检索到的值时仍能正确显示换行符。

关于asp.net - 在网页上显示文本时,替换(Environment.NewLine, "<br/>")未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8262489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com