Отображение х слов из HTML-кодированного текста - PullRequest
1 голос
/ 29 февраля 2012

Я использую следующий код для отображения моего HTML-кодированного текста из базы данных:

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

То, что я хочу сделать сейчас, это отобразить, например, только 20 слов контента и «...» в конце. Как мне это сделать? Я думал о добавлении помощника для IHtmlString, но я не знаю, как вернуть слова x для IHtmlString

1 Ответ

2 голосов
/ 29 февраля 2012

Как мне это сделать?

Вы можете написать собственный 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...