我正在寻找在 DataList 内的标签中裁剪一些文本。
<asp:Label runat="server" Text='<%# Eval("Description") %>'></asp:Label>
如果描述的长度超过 100 个字符并且出现“显示更多”链接(不需要“显示更少”),我希望我的描述被裁剪。单击“显示更多”后,完整的描述应该出现在同一页面上(这是我希望使用一些 jQuery 的地方)
谁能帮我开始解决这个问题?
我知道这是一个老问题,但为了回答起见:
public static class Extensions
{
/// <summary>
/// Truncate a value if it is a string.
/// </summary>
/// <param name="value">The value to check and truncate.</param>
/// <param name="length">The length to truncate to.</param>
/// <param name="appendEllipses">Append ellipses to the end of the value?</param>
/// <returns>A truncated string, if not a string the object value.</returns>
public static object Truncate(this object value, int length, bool appendEllipses = true)
{
// Are we dealing with a string value?
var result = value as string;
// Yes? truncate, otherwise pass through.
return result != null ? Truncate(result, length, appendEllipses) : value;
}
/// <summary>
/// Truncate a value if it is a string.
/// </summary>
/// <param name="value">The value to check and truncate.</param>
/// <param name="length">The length to truncate to.</param>
/// <param name="appendEllipses">Append elipses to the end of the value?</param>
/// <returns></returns>
public static string Truncate(this string value, int length, bool appendEllipses = true)
{
var result = value;
// Too Long?
if (value.Length > length)
{
// Truncate.
result = value.Substring(0, length);
// Add Ellipses, if needed.
if (appendEllipses) { result = result + " ..."; }
}
return result;
}
}
你可以像这样使用第二种方法:
<%# Eval("Description").ToString().Truncate(10) %>
或者为了避免混乱,您可以使用第一种方法,如下所示:
<%# Eval("Description").Truncate(10) %>
我不是 100% 想向对象类添加扩展方法,因为到处弹出来往往会很痛苦,因此我把它作为一个选项。