显示来自html编码文本的x个单词

时间:2012-02-28 22:15:18

标签: c# asp.net-mvc-3

我使用以下代码从数据库中显示我的html编码文本:

@Html.Raw(HttpUtility.HtmlDecode(@item.Content))

我现在要做的是仅显示内容的20个字,并且" ..."在末尾。我该怎么做?我正在考虑为IHtmlString添加一个帮助器,但我不知道如何为IHtmlString返回x个单词

1 个答案:

答案 0 :(得分:2)

  

我该怎么做?

您可以编写一个自定义HTML帮助程序,它有责任将输入字符串解析为成分单词并获取它们的第一个x

public static class HtmlExtensions
{
    private readonly static Regex _wordsRegex = new Regex(
        @"\s", RegexOptions.Compiled
    );

    public static IHtmlString FormatMessage(
        this HtmlHelper htmlHelper, 
        string message, 
        int count = 20
    )
    {
        if (string.IsNullOrEmpty(message))
        {
            return new HtmlString(string.Empty);
        }

        var words = _wordsRegex.Split(message);
        if (words.Length < count)
        {
            return new HtmlString(htmlHelper.Encode(message));
        }

        var result = string.Join(
            " ", 
            words.Select(w => htmlHelper.Encode(w)).Take(count)
        );
        return new HtmlString(result + " ...");
    }
}

可以在您的视图中使用:

@Html.FormatMessage(item.Content)

或者如果您想为指定 指定不同数量的

@Html.FormatMessage(item.Content, 5)