限制从DB为链接按钮分配的文本长度

时间:2012-03-05 18:23:29

标签: c# asp.net

我从DB中获取了一些文本,我以下列形式绑定到DataList ItemTemplate

<asp:LinkButton runat="server" Text='<%#Eval("url")%>' />

从数据库中提取的文本可能很长,我想在上面的eval作业中将其限制为(最多使用50个字符,然后使用......)。

怎么能在这里完成? 其次,如何在LinkButton中指定链接,以便在点击它时转到指定的链接,该链接应在新窗口中打开,如taget=_blank

3 个答案:

答案 0 :(得分:0)

您可以直接使用a标记

<a href='<%#Eval("url")%>' taget=_blank> <%# BindText(Eval("url"))%></a>

代码隐藏:

public string BindText(obj url)
{
 if(url!=null) {return (url.ToString().length > 50) ? url.ToString().Substring(0,50) + '...': url.ToString() ;}
 return "";
}

答案 1 :(得分:0)

处理这种情况的一种简单方法是创建一个String类型的“Truncate”扩展,它简单地从它的末尾剥离X个字符。

关于“target = _blank” - 您应该能够使用LinkBut​​ton的Attributes属性来完成此任务。

答案 2 :(得分:0)

取决于目标浏览器,使用CSS text-overflow是在客户端而不是服务器上执行此操作的一种优雅方式(最大化空间;只有那些必须被截断的文本才会被截断,并且它也会被占用帐户简单的标点规则)。

https://developer.mozilla.org/en/CSS/text-overflow

This blog post显示了一个不错的解决方案,因为它寻找注入省略号的空格(而不是盲目截断)。

用于设置LinkBut​​ton的目标......

<asp:LinkButton runat="server" target="_blank">

ASP.Net将(通常)忽略它无法识别的属性,并且只是逐字地将它们呈现给客户端。但是,这实际上并没有成功,因为LinkButton意味着发起回发。您可以改为使用锚标记。