2

我有一个通用的 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

4 回答 4

9

而不是使用AppendLine应该使用AppendFormat

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

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

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

在这里使用Environment.NewLine可能不起作用,您实际上可能需要更换\r\n.

于 2013-01-04T14:39:43.237 回答
2

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

以便它们可以在 HTML 换行符中呈现。

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

于 2013-01-04T14:41:12.837 回答
0

StringBuilder 附加的行不会显示在浏览器中。浏览器只识别
和换行。所以你必须包含在浏览器中显示的标签

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

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

您也可以替换新行

AcceptedMessage.InnerHtml = sb.ToString().Replace("\n", "<br />");
于 2013-01-04T14:43:06.063 回答
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);
于 2013-01-04T16:16:49.837 回答