【问题标题】:When using <pre> tag, text goes outside parent <asp:label> border使用 <pre> 标签时,文本超出父 <asp:label> 边框
【发布时间】:2010-12-06 23:45:45
【问题描述】:

我有一个奇怪的问题,

我有一个数据中继器,它从数据库中读取一些用户条目,然后将它们显示在 &lt;asp:label&gt; ..

我的第一个问题是,当阅读文本时,所有\ns 都被删除了..

所以我使用&lt;pre&gt; 标签来解决问题.. 然而……出现了一个新问题…… 现在文本实际上超出了标签的边界..

<td width="630px" >
 <pre>
   <asp:Label ID="lblComments"  runat="Server" 
       width="630px" Text='<%#DataBinder.Eval(Container.DataItem, "Comments") %>'
       Style="font-size: larger">
   </asp:Label>
  </pre>
</td>

【问题讨论】:

  • (已弃用)宽度属性采用整数或百分比。 “630px”是一个错误(尽管验证器不会选择一个错误,因为 DTD 中没有表达该要求,尽管它在规范的文本中)

标签: asp.net html css


【解决方案1】:

是的,pre 只会输出文本,几乎不考虑页面布局。

您应该格式化数据库中的文本以将\n 转换为&lt;br/&gt;s。

你应该能够摆脱类似的事情:

<%# DataBinder.Eval(Container.DataItem, "Comments")
                   .ToString().Replace("\n", "<br />") %>

【讨论】:

  • 这是我的建议,但请注意它不是完全证明的 - 如果数据来自用户输入,它也可能是 \r\n 或 \r,不确定 Environment.NewLine在这种情况下会有所帮助(除非您在所有用户输入上规范化新行)
  • 确实如此,我几乎使用了 Environment.NewLine。但是,它们将是 \n 或 \n\r,但我从未见过 \r,因此您可以只替换 \n 而忽略 \r,这不会对显示输出。
  • 哦..你缺少一个 .tostring() :D ..or (string) case..但是 thx 就像一个魅力.. !!
【解决方案2】:

 表示 预格式化,因此不会在文本中添加额外的换行符。

您必须缩短预格式化文本中的行长。

【讨论】:

  • 抱歉不得不将答案切换为 zhaph .. 因为它解决了它而没有强迫我修改设计:)
  • 哦,好吧,你赢了一些,你也输了一些。
【解决方案3】:

使用 css 属性“pre {white-space: normal;}” 这行得通吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 2016-09-20
    • 1970-01-01
    相关资源
    最近更新 更多