标签每隔X个字符断行

时间:2009-07-12 15:52:20

标签: c# asp.net

如果内容超出标签的宽度,是否可以将标签分解为新行? (就像在多行文本框中发生的那样) 我知道有一个单词wrap css,但它不是跨浏览器。

或者我需要手动打破它,通过每隔x个字符插入<br>标记,就像我现在这样做(也许有更好的方法):

 string  content = HttpUtility.HtmlEncode(content);
 int len = content.Length; 
 for (int i = 80; i < len; i = i + 80)
 {                       
     content = content.Insert(i, "<br>");                      
 }
 return content;

4 个答案:

答案 0 :(得分:0)

我不认为asp:label的属性可以满足您的需求。但是当我需要这样的东西时,你一般都会做我做的事情!

如果您可以将标签贴在可以设置宽度的HTML元素中,那么css将为您处理自动换行,如果您的文本由带空格的文本组成:

    <div style="width:80px"><asp:label id="lbl" runat="server" 
text="abcdefghij klmnopqrstuvwzyz1234567890 
abcdefghijklmnopqrstuvwzyz12345678 
90abcdefghijklmnopqrstuvwzyz1234567890ab 
cdefghijklmnopqrstuvwzyz123 
4567890abcdefghijklmnopqrstu 
vwzyz1234567890abcdefghijkl 
mnopqrstuvwzyz1234567890abcdefgh
ijklmnopqrstuvwzyz1234567890" /></div>

但有时如果文本没有任何浏览器检测到的断字符,那么它只会将整个字符串吐出一条破坏你设计的巨大线条。

所以我通常会根据需要手动拆分大字符串,否则我会依靠CSS来为我做。

答案 1 :(得分:0)

跨浏览器兼容的东西是将标签更改为块,然后您不必进行任何服务器端处理。我的猜测是渲染出来的东西,在<span />渲染出来,所以宽度不起作用。

试试这个

span.mylablel {
    display: block;
    width: 100px;
}

希望这会有所帮助

答案 2 :(得分:0)

没有任何属性可以为标签执行此操作。而不是使用标签,为什么不使用TextBox并使其看起来像一个标签?然后,您将获得内置的多行功能。这将是一个干净的解决方案,不需要代码操作来执行换行符。

尝试使用具有以下属性集的文本框控件,或许它可以满足您的需求:

    <asp:TextBox ID="txtFakeMultilineLabel" runat="server" BorderStyle="None"
BorderWidth="0" Wrap="true" Rows="14" Width="300" ReadOnly="true"
TextMode="MultiLine">text here or set from code-behind</asp:TextBox>

您可以设置行和宽度来控制所需的大小。如果内容溢出行,则会显示滚动条。这可能是也可能不是,但这是一个快速的解决方案。

答案 3 :(得分:0)

最终答案:

好的,现在你的问题变得更清楚了,

我为你写了这个,它运作良好:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
    <style type="text/css">

        .TextBox 
        {
            width : 140px ;
            display : block ;
            border : solid 1px black ;
            cursor :default ;         
            height : 500px ; 
            overflow:hidden ;
        }        
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <asp:TextBox ID="TextBox1" runat="server" CssClass="TextBox" ReadOnly="true"

        Text="        gfsgtgvyhhtthbjyudrjedgjdgjwmedgjmwegdjmewgdj wedjwegjmwgejwegxjw egxjegxjmegxjejmxgewjgx
        dfsdfsgm;lsdgfml;dgmdl; gmsdl;gsmgklngjhnghl;kfl;dkgdgh d,fhklhkldfmgdklfhndfjhdjkfjhndlkfhld
        dfjgsdklgnsldkgnsdgkn sldgknsdkgnsdlgksndglksdnglksdn gnsdglksndgsldgn sdlgnsdkglsdgn" 
        TextMode="MultiLine"    ></asp:TextBox>
    </form>
</body>
</html>

享受;)