2013-06-11 23 views
1

我正在開發一個ASP.Net MVC4 web應用程序,它具有顯示新聞文章列表的新聞部分。該列表顯示每篇文章的新聞標題,然後打印新聞文本的前400個字符,因爲這只是一個摘要頁面。當用戶點擊新聞標題時,他們就可以看到新聞文章的完整內容。從剃刀視圖中的Html.Raw中移除img標記

要將新聞文章添加到網站,我使用FCKEditor作爲富文本編輯器,該文本編輯器還允許用戶上傳圖片以伴隨文本。當我打印出每個新聞文章的第400個字符我這樣做這樣

@Html.Raw(news.newsText.Substring(0, 400)) 

這工作得很好,只要有頭400個字符內沒有圖像標籤,但是,如果用戶增加了一個形象的文字這是前400個字符,圖像顯示在新聞摘要中,這使得看起來很混亂。

相反,如果前400個字符中有一個圖像標記,我寧願不顯示它,而是顯示文本。

我想知道這是否可能?

感謝您的幫助。

回答

1

您可以使用正則表達式從HTML中刪除所有<img>標籤,然後從中取出400個字符。

您可以創建自己的擴展方法這個如下:

public static class StringExtensions 
{ 
    public static string SkipImgTags(this string html, int length) 
    { 
     string strWithoutImgTags = Regex.Replace(html, @"(<img\/?[^>]+>)", @"", RegexOptions.IgnoreCase); 

     return strWithoutImgTags.Substring(strWithoutImgTags.Length - length); 
    } 
} 

,然後在你的代碼,你可以按照以下稱之爲:

@Html.Raw(news.newsText.SkipImgTags(400)) 
1

在你到達剃鬚刀之前,你可以用這樣的代碼去除它們。

var news = news.newsText.Substring(0, 400); 
news = Regex.Replace(news, @"<img\s[^>]*>(?:\s*?</img>)?", "", RegexOptions.IgnoreCase); 

不過,我會建議使用類似的Html Agility Pack任務,如這些。