Asp.net 向数据库发送文本时,换行符丢失

Asp.net 向数据库发送文本时,换行符丢失,asp.net,sql,sql-server,stored-procedures,Asp.net,Sql,Sql Server,Stored Procedures,由于某些原因,ASP.NET文本框中的换行符未存储在我的数据库中 我使用Server.HtmlEncode(txtAbout.Text)从文本框中获取文本。 这部分工作正常,文本用换行符取出 但是当我跟踪文本时,换行符在这一行之后丢失: db.AddInParameter(dbCommand, "About", DbType.String, about); db.ExecuteNonQuery(dbCommand); 在存储过程中,变量@about是ntext。 表中的“关于”列为ntext

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

我使用Server.HtmlEncode(txtAbout.Text)从文本框中获取文本。 这部分工作正常,文本用换行符取出

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

db.AddInParameter(dbCommand, "About", DbType.String, about);
db.ExecuteNonQuery(dbCommand);
在存储过程中,变量@about是ntext。 表中的“关于”列为ntext


我希望有人能帮忙。

在将“about”发送到存储过程之前,您能跟踪它的值吗

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

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

然后,一旦你做了,然后做“安置”。例如:

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

此外,这也是您要对输出进行编码的地方。在输出结果之前,您几乎总是只进行最后的转换;我们的想法是,您不想丢失原始输入。

输出到标签不是问题。问题是将其输出到标签,而不执行上面提到的替换Justin

我刚刚在VS2010(.NET3.5)中测试了这个功能,它运行正常

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

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

lblAbout.Text=Server.HtmlEncode(aboutText).Replace(Environment.Newline,“
”);

此解决方案的工作原理与文字相同。

您可以执行txtAbout.Text.Replace(Environment.NewLine,“
”)吗?我无法执行此操作,因为如果稍后编辑about文本,则我不希望用户看到mark upSolution完美工作。让我吃惊的是,我看不到表中有任何换行符,但就像你说的,它仍然存储它们。