2013-06-11 2 views
1

뉴스 기사 목록을 표시하는 뉴스 섹션이있는 ASP.Net MVC4 웹 응용 프로그램을 개발 중입니다. 이 목록에는 각 기사의 뉴스 헤드 라인이 나와 있으며 요약 텍스트 일 ​​뿐이므로 뉴스 텍스트의 처음 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 같은 것을 사용하는 것이 좋습니다 것입니다.