2012-02-28 31 views
2

我使用下面的代碼來顯示從數據庫中我的HTML編碼的文本:顯示的X字

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

我想現在要做的就是顯示例如僅20個字的內容和最後的「...」。我應該怎麼做?我正在考慮爲IHtmlString添加一個幫助器,但我不知道如何返回IHtmlString的x個字

回答

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) 
+0

太棒了!謝謝Darin Dimitrov – 2012-02-28 22:44:52