2009-07-27 51 views
1

我总是使用Replace(myString,vbCrLf,“< br />”)在向数据库中的页面输出某些内容时显示换行符(保留换行符)。我现在使用一个DetailsView作为其中一个字段并使用LinqDataSource作为其数据源。我希望允许用户在textarea中输入换行符并将它们显示在页面上(替换为在HTML中显示中断)。 Linq似乎正在用别的东西代替换行符,这会导致Replace语句找不到中断,因此不会插入html。当从数据库加载数值到textarea时,换行符仍然存在。我试图用<替换下面的内容,但它们都不起作用。当更新时,Linq会替换新行吗?

vbCrLf 
vbNewLine 
Environment.NewLine 

......这些都不工作......什么,我需要找到/与< BR>显示断裂更换?

回答

0

文本区域使用不同的浏览器不同的换行字符:

  • Internet Explorer中:\ r \ n
  • 火狐:\ n

也有人认为,\ r用作在某些情况下,虽然我没有遇到过这些情况。

回车符编码为%0D和换行符为%0A。所以,如果您的文本HTML编码(因为它应该是),那么你就需要更换%0D和/或%0A您< BR/>

这里[取决于您的环境]是的话题进行了充分讨论http://www.highdots.com/forums/html/standard-newline-character-264611.html

+0

谢谢,HTMLE使用AntiXss进行编码,其 被
取代,现在可以正常工作。尽管如此,仍然不确定发生了什么或Linq改变了什么,vbCrLf一直在过去工作。 – Ryan 2009-07-27 18:37:10

0

将字符串视为字节数组,该换行符是什么值?这里只有很多选择,10,13,都没有?

0

这对我的伟大工程:

string Output = HttpUtility.HtmlEncode(DirtyText); // HTML Encode it first for safety.. 
return Output.Replace("\n", "<br />");    // Now replace New Lines with HTML BRs 

你结束了一个安全的编码输出,同时也很好的格式化的行间距正好由用户输入到一个标准的textarea。