Stringbuilder文本不显示在新行上

时间:2013-01-04 14:38:26

标签: c# asp.net stringbuilder

我有一个通用的html控件 - 一个'P'标签,我已经添加了runat="server"

我使用Stringbuilder方法构造一个字符串,并将其应用于标记的InnerHtml属性。

包含许多sb.Appendline()的文本仍然显示为段落,但不会创建任何新行。但是,当我查看创建的标记时,新的行就在那里,显示为间距。

DIV也是如此

任何人都对我如何解决这个问题有任何想法?

以下代码:

        var sb = new StringBuilder();
        sb.Append("Congratulations!");
        sb.AppendLine();
        sb.AppendLine();
        sb.AppendFormat("Your application was accepted by <b>{0}</b>.", response.AcceptedLender);
        sb.AppendLine();
        sb.AppendFormat("Your reference number is <b>{0}</b>.", response.PPDReference);
        sb.AppendLine();
        sb.AppendLine();
        sb.Append("Click the button below to sign your loan agreement electronically and collect your cash.");

        AcceptedMessage.InnerHtml = sb.ToString();

4 个答案:

答案 0 :(得分:8)

不应使用AppendLine,而应使用AppendFormat

myStringBuilder.AppendFormat("{0}<br />", strToAppend);

如果您需要这些换行符保持“按原样”,因为您将其显示在文本文件或某种性质中,您需要在调用时将html符号替换为新的换行符.ToString()方法。

myStringBuilder.Replace(Environment.NewLine, "<br />").ToString();

在这里使用Environment.NewLine可能无效,您实际上可能需要替换\r\n

答案 1 :(得分:2)

您必须将stringlbuilder换行符(\ n)转换为BR标记

这样它们就可以用HTML换行符呈现。

更好的IMO是将整行包含在P标签中

答案 2 :(得分:0)

StringBuilder附加的行不会在浏览器中显示。浏览器仅识别新行和新行。因此,您必须包含用于在浏览器中显示的标记

  sb.AppendLine("some text here <br />");

新行将显示在控制台应用程序中,而不是浏览器

您也可以替换新行

AcceptedMessage.InnerHtml = sb.ToString().Replace("\n", "<br />");

答案 3 :(得分:0)

string messagePattern = @"
<p>Congratulations!</p>
<p>Your application was accepted by <b>{0}</b>.<br />
   Your reference number is <b>{1}</b>.</p>
<p>Click the button below to sign your loan agreement 
   electronically and collect your cash.</p>";

AcceptedMessage.InnerHtml = string.Format(
    messagePattern, 
    response.AcceptedLender, 
    response.PPDReference);