在 Asp.Net 中强制关闭 Html 标签

Posted

技术标签:

【中文标题】在 Asp.Net 中强制关闭 Html 标签【英文标题】:Force Closing Html Tags in Asp.Net 【发布时间】:2014-04-26 00:19:29 【问题描述】:

我目前正在处理一个 asp.net 页面,我在数据库中有一个包含一些新闻的字符串。我在我的主页上显示了最新消息的简短版本。我使用 substring 方法在 25 个字符后剪切其余的新闻。它工作得很好。问题是当“新闻”具有如下列表标签时:

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

IE v.9 没有正确切割 25 个字符后的部分 - 它在 25 个字符后又显示了一个列表点。在 Firefox 和 Chrome 上它的工作......但不是 IE v9。我认为问题在于打开的 html 标签和 IE9 的自动完成。是否有任何选项可以强制关闭所有标签(从后面的代码中)或避免在 IE9 上自动完成?

也许其他人有更好的办法来解决问题。

【问题讨论】:

您是否正在使用 javascript 在浏览器中加载完整的文本并缩短它们? 【参考方案1】:

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

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

如果是这样,您可以通过删除不需要的节点来操纵您的XmlDocument,如下所示:Removing nodes from an XmlDocument。为此,您可以遍历源 XmlDocument 并仅将那些节点复制到符合汇总标准(例如长度

完成目标 XmlDocument 后,您可以将缩写的 XmlDocument 输出为字符串 (à la Convert XmlDocument to String)。

这将为您提供所需的内容,但不必通过强制截断特定长度来损坏您的 Html。

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于在 Asp.Net 中强制关闭 Html 标签的主要内容,如果未能解决你的问题,请参考以下文章

如何关闭 ASP.NET 应用程序的默认选项卡

如何允许在 asp.net 的文本框中提交 HTML 标签?

我如何使用 HTML 视频标签在 asp.net 应用程序中播放 VLC 实时流媒体视频

Asp.Net 单点登录(SSO)|禁止重复登陆|登录强制下线

asp.net核心中的部分标签助手和HTML助手有啥区别?

在请求期间访问/使用相同的对象 - asp.net