1

我有一个 ASP.NET 页面,其中一个接一个地显示许多博客文章。我不想打印整个博客文章,而只想打印一定数量的带有阅读更多链接的字符。每篇文章都以 html 格式保存在加载它的数据库中。我目前从帖子中剥离所有 html 标签并显示设定的字符数(例如前 300 个),但我最终失去了所有样式。如果我不去掉标签,那么被截断的帖子会得到各种未关闭的 html 标签,这些标签会破坏页面,尤其是在 IE 上。博客文章是通过我无法控制的不同系统输入的。为了克服这个问题,我已经编写了一个方法,该方法将字符串中的 html 添加到数组列表中,并在关闭标签后立即将其从数组列表的末尾删除,因此最后数组列表只剩下开放标签还没有关闭。我检查这些标签并将每个标签替换为其结束标签。然后我将所有这些结束标记添加到一个字符串中,并将该字符串附加到实际的 html 字符串中。向字符串添加开始标签时,我会忽略所有包含 /> 的标签,以避免自关闭标签。这对我来说是工作,但我的方法容易出现错误,因为 html 字符串是不可预测的。有没有更好的方法解决这个问题?向字符串添加开始标签时,我会忽略所有包含 /> 的标签,以避免自关闭标签。这对我来说是工作,但我的方法容易出现错误,因为 html 字符串是不可预测的。有没有更好的方法解决这个问题?向字符串添加开始标签时,我会忽略所有包含 /> 的标签,以避免自关闭标签。这对我来说是工作,但我的方法容易出现错误,因为 html 字符串是不可预测的。有没有更好的方法解决这个问题?

4

1 回答 1

0

与其尝试将博客文章作为原始 html 进行操作,不如假设博客文章的结构一致,提取博客文章的内容并根据需要重新格式化。

例如,如果博客是这样的格式,

<blog>
  <title>The blog title</title>
  <content>
    A bunch of content
  </content>
</blog>

然后将博客解析成 POCO

public class Blog
{
  public string Title { get; set; }
  public string Content { get; set; }
}

然后操纵内容并根据需要重新显示它。

<div class="blog-summary">
  <h1>@Model.Title</h1>
  <p>
    @Model.Content.Substring(0, 300)
  </p>
</div>

这样,您只需要获取博客内容的子字符串,而不是标记。

于 2013-11-06T21:06:53.360 回答