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