【问题标题】:Line breaks are being lost when sending text to the Database将文本发送到数据库时,换行符丢失
【发布时间】:2011-07-02 00:31:46
【问题描述】:

由于某种原因,来自 ASP.NET 文本框的换行符没有存储在我的数据库中。

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

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

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

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

希望有人能帮忙。

【问题讨论】:

  • 你能做 txtAbout.Text.Replace(Environment.NewLine,"
    ") 吗?
  • 我不能这样做,因为如果稍后编辑了关于文本,那么我不希望用户看到标记

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


【解决方案1】:

输出到标签不是问题。问题是将其输出到标签而没有做 Justin 提到的替换。

我刚刚在 VS2010 (.NET 3.5) 中对此进行了测试,并且成功了。

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

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

此解决方案将与文字相同。

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

    • 解决方案完美运行。让我感动的是,我在表格中看不到任何换行符,但就像你说的那样,它仍然存储了它们。
    猜你喜欢
    • 1970-01-01
    • 2019-12-08
    • 2018-01-25
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多