nul*_*ion 4 html vb.net asp.net updatepanel line-breaks
我不确定为什么下面的代码没有按预期工作:
litMessage.Text = messageBody.Replace(Environment.NewLine, "<br/>")
Run Code Online (Sandbox Code Playgroud)
litMessage
文字控件的名称在哪里,是messageBody
字符串变量的名称.
我的目的是将一个字符串输出到一个网页上,并用一个br标签替换换行符,以便它可以正确地显示在页面上.但是,没有任何东西被取代 查看页面源时,看起来字符串中仍然存在换行符.同样,当通过MsgBox显示字符串时,它也会正常显示.我也尝试用pre
标签包装输出,它也正确显示换行符.
该字符串最初由用户通过使用asp:Textbox输入并保存到MSSQL数据库中.它使用asp:Literal控件检索并显示在另一个网页上.字符串在提交之前唯一发生的事情是它被修剪(即textbox.Text.Trim())
.
也许有些事情我没有考虑过?
编辑#1:由于时间限制,我决定用pre
标签包装文本.这是一个可以接受的工作,因为它保留了换行符.不幸的是,它没有解释为什么代码首先不起作用.与此同时,我会在没有答案的情况下回答这个问题,直到找到合适的答案.
编辑#2:找到解决方案并在下面回答.UpdatePanel标记已添加到问题中以供将来参考.
重新审视此问题后,我发现updatepanels导致了问题.
做了一些测试,我使用以下代码查看了包含的字符串:
MsgBox(textbox.Text.Contains(vbCr))
MsgBox(textbox.Text.Contains(vbCrLf))
MsgBox(textbox.Text.Contains(vbNewLine))
MsgBox(textbox.Text.Contains(Environment.Newline))
Run Code Online (Sandbox Code Playgroud)
所有四个语句都返回false.在发送到数据库之前以及从数据库检索的字符串上对字符串进行了测试.
从我的角度来看,标记上必须有一些东西可以删除换行符.起初,我认为Literal,Textbox和Label控件在后面的代码中检索时对换行符做了一些有趣的事情.事实并非如此(如果微软允许这种情况发生,那将会很奇怪).
再仔细研究一下代码,我发现所有这些控件都在UpdatePanel中.记住我之前使用UpdatePanels的负面体验,然后我认为这可能只是罪魁祸首.我把它删除了,看哪,换行符没有在代码中消失.我上面发布的代码都返回true.
这两个页面都有用于提交文本和在UpdatePanel中显示文本的控件.我发现从页面检索文本时换行符消失了.在页面上显示文本时,UpdatePanel不会以任何方式更改字符串.以下代码最终正常工作:
litMessage.Text = messageBody.Replace(Environment.NewLine, "<br/>")
Run Code Online (Sandbox Code Playgroud)
虽然我仍然不确定为什么在使用pre
标签时仍能正确显示换行符,甚至使用javascript警告框显示检索到的值.
归档时间: |
|
查看次数: |
22220 次 |
最近记录: |