我有一个允许html格式存储在我的数据库中的字段。
public class MyItem {
....
[AllowHtml]
public string Description { get; set; }
....
}
不知何故,我想显示我的项目列表,但只显示前500个字符。
Description = new string(v.EventDescription.Take(500).ToArray()) + "...";
我意识到我从中获取了所有内容,包括p, img, h3, etc
等所有xml标签。如何才能仅过滤p
(段落)内的内容?
这是我的HTML结果:
<p style="text-align: center;">
<img alt="" height="1200" src="/Content/Images/ContentImage/3a173930-d7ea-e711-a636-1c4d70ad76a8/wedding2.jpeg" width="1200"/>
</p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed varius est nisl, id ultrices purus posuere in. Nullam non elit faucibus, tempus orci id, convallis mi. Maecenas eget libero tortor. Proin dapibus massa quis erat condimentum, ut mollis sapien fringilla. Phasellus vitae porttitor nunc, sed laoreet lacus. Quisque convallis ...
<span style="font-weight: bold;">Read more.</span>
</p>
注意:我需要从服务器端而不是从客户端执行此操作。
答案 0 :(得分:0)
我不建议使用字符串操纵器来实现这一点, 在这种情况下,我更喜欢使用HtmlAgilityPack来解析数据,但是验证你的html是必要的。 像这样的东西。
descHtml = new string(v.EventDescription.ToArray());
if(validate(descHtml)){
HtmlAgilityPack.HtmlDocument htmlDocument = new
HtmlAgilityPack.HtmlDocument();
htmlDocument.LoadHtml(descHtml );
var description = string.Join("{SEPARATOR}",
htmlDocument.DocumentNode.SelectNodes("/p/text()").Select(p => p.InnerText)); }