0

我正在寻找在 DataList 内的标签中裁剪一些文本。

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

如果描述的长度超过 100 个字符并且出现“显示更多”链接(不需要“显示更少”),我希望我的描述被裁剪。单击“显示更多”后,完整的描述应该出现在同一页面上(这是我希望使用一些 jQuery 的地方)

谁能帮我开始解决这个问题?

4

1 回答 1

0

我知道这是一个老问题,但为了回答起见:

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% 想向对象类添加扩展方法,因为到处弹出来往往会很痛苦,因此我把它作为一个选项。

于 2014-11-03T04:10:09.387 回答