我有一个ASP.NET页面,一个接一个地显示一些博客文章。我不想打印整个博客帖子,只打印一组带有“阅读更多”链接的字符。每个帖子都在数据库中保存为html,从中加载。我目前从帖子中删除所有html标签并显示设置的字符数(例如前300个)但我最终失去了所有的样式。如果我不删除标签,那么截断的帖子会获得各种未关闭的html标签,这些标签会破坏页面,特别是在IE上。博客文章是通过我无法控制的其他系统输入的。为了解决这个问题,我编写了一个方法,它将字符串中的html添加到数组列表中的所有开始标记,并且一旦标记被关闭,它就会从数组列表的末尾删除它,所以最后数组列表是只剩下没有关闭的开放标签。我检查这些标签并用其结束标签替换每个标签。然后我将所有这些结束标记添加到字符串并将字符串附加到实际的html字符串。在字符串中添加开始标记时,我会忽略包含/>的所有标记。避免自我关闭标签。这是我的工作,但我的方法很容易出错,因为html字符串是不可预测的。有没有更好的解决这个问题的方法?
答案 0 :(得分: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>
这样你只会获取博客内容的子字符串,而不是标记。