将文本发送到数据库时,换行符丢失

时间:2011-02-22 13:41:48

标签: asp.net sql sql-server stored-procedures

由于某些原因,ASP.NET文本框中的换行符未存储在我的数据库中。

我正在使用Server.HtmlEncode(txtAbout.Text)从文本框中获取文本。 这部分有效,文字用换行符取出。

但是当我跟踪文本时,换行符会在此行之后丢失:

db.AddInParameter(dbCommand, "About", DbType.String, about);
db.ExecuteNonQuery(dbCommand);

在存储过程中,varable @about是ntext。 在表中,列是关于ntext

我希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:2)

在将其发送到存储过程之前,您能否跟踪“约”的值是什么?

我怀疑当您输出存储的结果时,您正在将其分配给标签。而是将其输出为文字:

<asp:Literal runat="server" id="litAbout" />

然后,一旦你完成了,然后做“放置”。例如:

litAbout.Text = Server.HtmlEncode(aboutText).Replace(Environment.NewLine, "<br/>");

此外,这是您要对输出进行编码的位置。在输出结果之前,您几乎总是只进行最终的转换;我们的想法是你不想失去原始的投入。

答案 1 :(得分:1)

输出到标签不是问题。问题是将它输出到标签而不进行Justin提到的替换。

我刚刚在VS2010(.NET 3.5)中对此进行了测试,但它确实有效。

<asp:Label runat="server" ID="lblAbout" />

lblAbout.Text = Server.HtmlEncode(aboutText).Replace(Environment.Newline, "<br />");

此解决方案与文字相同。