Asp.net mvc 从Razor视图中的Html.Raw中删除img标记

Asp.net mvc 从Razor视图中的Html.Raw中删除img标记,asp.net-mvc,razor,replace,substring,Asp.net Mvc,Razor,Replace,Substring,我正在开发一个ASP.NETMVC4Web应用程序,它有一个显示新闻文章列表的新闻部分。该列表显示每篇文章的新闻标题,然后打印出新闻文本的前400个字符,因为这只是一个摘要页面。当用户点击新闻标题时,他们就可以看到完整的新闻文章 为了向站点添加新闻文章,我使用了FCKEditor作为富文本编辑器,它还允许用户上传一个图像来伴随文本。当我打印出每篇新闻文章的前400个字符时,我是这样做的 @Html.Raw(news.newsText.Substring(0, 400)) 只要在前400个字符内

我正在开发一个ASP.NETMVC4Web应用程序,它有一个显示新闻文章列表的新闻部分。该列表显示每篇文章的新闻标题,然后打印出新闻文本的前400个字符,因为这只是一个摘要页面。当用户点击新闻标题时,他们就可以看到完整的新闻文章

为了向站点添加新闻文章,我使用了FCKEditor作为富文本编辑器,它还允许用户上传一个图像来伴随文本。当我打印出每篇新闻文章的前400个字符时,我是这样做的

@Html.Raw(news.newsText.Substring(0, 400))
只要在前400个字符内没有图像标记,这就可以正常工作。但是,如果用户在其文本中添加了前400个字符的图像,则图像将显示在新闻摘要中,这会使其看起来很混乱

相反,如果在前400个字符中有一个图像标记,我宁愿不显示它,而只显示文本

我想知道这是否可能


谢谢您的帮助。

在您使用剃须刀之前,您可以在控制器中使用以下代码将其剥落

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

但是,我建议您使用类似的方法来执行这些任务。

您可以使用正则表达式从HTML中删除所有
标记,然后从中提取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))