1

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

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

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

如果前 400 个字符内没有图像标签,这可以正常工作,但是,如果用户将图像添加到前 400 个字符中的文本中,则图像会显示在新闻摘要中,这会使它看起来很混乱。

相反,如果前 400 个字符内有图像标签,我宁愿不显示它,而是只显示文本。

我想知道这是否可能?

谢谢你的帮助。

4

2 回答 2

1

在你拿到剃须刀之前,你可以用这样的代码在控制器中剥离它们。

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

但是,我建议使用Html Agility Pack之类的东西来完成此类任务。

于 2013-06-11T16:01:27.037 回答
1

您可以使用正则表达式<img>从 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))
于 2013-06-11T16:04:44.647 回答