【发布时间】:2013-12-05 00:45:03
【问题描述】:
我正在寻找一种方法来检查包含 html 的字符串并确定它是否包含任何应该可见的文本,不包括空格。
基本上,如果在将其呈现为innerHTML 的<div> 时显示为可见文本,则任何内容都应视为可见。
例如
-
<div>hello</div>是可见的,因为“hello”显示在浏览器中。 -
<div><p> <br/></div>&nbsp;不可见。 -
<script>alert('asdf')</script>不可见。 -
plain text是可见的,尽管它不包含任何 html 标记。
有很多我不确定的情况(任何结果都可以接受):
-
<div style="display: none">this is tricky</div>不可见,但由于 css 为问题增加了另一层复杂性,因此最好不要打扰它。 -
<script>document.write('What is this, I don't even-')</script>应该不在这个问题的范围内。 -
<input value="Read this">是可见的,但我现在不关心表单元素,所以这还不如不可见。
我想决定这个服务器端并相应地处理这种情况。
在 C# 中是否有一种很好的方法来决定这一点?编写自己的解决方案似乎很乏味,我想知道是否有人已经这样做了(或类似的事情)。
编辑:
这个问题很难理解吗?我已经说过我想在服务器上做,而不是在浏览器环境中。 jQuery 和 jsfiddle 在这里没什么相关性。
【问题讨论】:
-
您没有使用正确的工具来完成这项工作;这就是为什么这些问题看起来“很难”。如果您正在执行回发并需要检查某些服务器控件的长度,则对您拥有的任何元素使用 C# .Length 方法。最简单的方法是使用 jQuery 的 .html().length 然后回发由此产生的任何值,而不是回发整个控件。
-
我真的不知道该说什么。为什么我要进行任何回发?我还没有发送任何客户端。这些字符串来自一个数据库,其中包含对 HTML 中某些内容的描述。有一些垃圾数据,描述应该是空的,但是
string.IsNullOrEmpty()返回false,因为它包含html标签。 -
您是否对Html Agility Pack 之类的库开放?
-
@lastr2d2 :当然可以。我目前正在查看stackoverflow.com/questions/13248789/…,这是一个类似的问题。
-
参考stackoverflow.com/questions/6344771/… 之类的问题以及右侧的相关问题。我相信它一定会发挥作用
标签: c# .net asp.net-mvc