【问题标题】:Trimming or formatting an asp net hyperlink修剪或格式化 asp 网络超链接
【发布时间】:2017-07-03 21:05:48
【问题描述】:

正如标题所说:我想修剪或格式化一个很长的超链接。如果文本太长,我希望代码知道这一点并将剩余的字符串替换为“...”,例如:“averylongemailaccountexample@example.com”。一旦“帐户”启动,我希望将其替换为“...”

我试过修剪,但它不起作用。

C#:

var getContact = _ecSystem.GetContact(ContactId.Value);
    hlEmail.Text = getContact.Email.Trim(); //getContact.Email is a string.

ASPX:

<asp:HyperLink runat="server" ID="hlEmail" NavigateUrl="#"  />

【问题讨论】:

  • Trim 只是从字符串的开头/结尾删除空格。所以,你想要的基本上是用averylongemailaccount...@example.com替换averylongemailaccountexample@example.com
  • 这是所有电子邮件地址都使用的模式,还是您想将地址拆分为已知单词?
  • 如果邮件长度超过 20 个字符,我希望结尾是“...”
  • @Malphai - 如果实际数据的目的只是在 UI 上显示,为什么还要操纵实际数据?试想一下,您想在单击此 hyperlink 时执行一些操作,您将通过averylong..... 您的数据库理解吗?最好的方法是使用 CSS.
  • @RahulSingh 如果您有任何建议,请创建一个关于它的帖子。

标签: c# asp.net string hyperlink trim


【解决方案1】:

您是否尝试过使用常规的SubString method

var emailaddress = getContact.Email.Trim();
hlEmail.Text = emailaddress.Length > 20 ? emailaddress.SubString(0, 17) + "..." : emailaddress;

但正如@RahulSingh 所说,最优雅的方法是使用css and the text-overflow property,然后限制链接所在的html容器的大小。

<a style="text-overflow: ellipsis; width: 50px; float: left; overflow: hidden;" href="mailto:averylongemailaccountexample@example.com">averylongemailaccountexample@example.com</a>

【讨论】:

  • 什么? IntelliSense 中没有子串选项?
  • 将呈现为锚标记,因此您可以将样式粘贴到它上面并根据需要给它一个宽度... :-)
  • @Malphai 那么什么不起作用,C# 方法还是 css?
  • CSS 方法。我认为这与我的容器有关。
猜你喜欢
  • 2012-07-05
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多