2014-03-19 141 views
0

我正在一个asp.net页面上工作,并且在数据库中有一条新闻。我在主页上显示了最新消息的简短版本。我使用子字符串方法来削减25个字符后的其他新闻。它的工作很好。问题是,当“新闻”有一个像列表标签:在Asp.Net中强制关闭HTML标记

<p> Hello all! </p> 
<ul> 
    <li> Telling you something: 
    <ul> 
     <li> Telling you that... 
    </ul> 
    </li> 
    <li> Telling you something else 
    <li> 
... 

IE 9节是不正确切割后25个字符的一部分 - 它showes后25个字符多一个列表点。在Firefox和Chrome上它的工作...但不是与IE v9。我认为问题是开放的html标签和IE9的自动完成。是否有任何选项可以强制关闭所有标记(来自代码背后)或避免IE9上的自动完成?

也许别人有更好的主意来解决这个问题。

+0

您是否正在使用JavaScript加载完整文本并将其缩短到浏览器中? – Alexander

回答

0

在将数据返回给客户端之前,您是否可以将HTML字符串加载到服务器端的XmlDocument

XmlDocument xmlDocument = new XmlDocument(); 
xmlDocument.LoadXml("{your-html-string}"); 

如果是这样,你可以操纵你通过除去不需要的节点,如下所示XmlDocumentRemoving nodes from an XmlDocument。为此,您可以循环访问源XmlDocument,并仅将这些节点复制到适合您的汇总条件(例如,长度为< = 25)的目标XmlDocument中。

一旦你完成了你的目标XmlDocument,你可以输出你的缩写XmlDocument作为一个字符串(àla Convert XmlDocument to String)。

这会给你你所需要的,但不必通过强制截断特定长度来破坏你的Html。

如果您的HTML与XML不兼容(不是严格的XHTML),那么您可以尝试使用Html Agility Pack解析您的源HTML。

0

无法将html字符串保存在服务器上的xml文件中。我直接从DB加载新闻字符串。有没有其他的选择?