检查HtmlString是否是C#中的空格

时间:2014-02-06 03:28:26

标签: c# html asp.net-mvc string whitespace

我有一个包装器,只要它有一个值就会在字段中添加标题。该字段实际上是一个字符串,用于保存来自tinymce文本框的HTML。

要求:当字段为空或只是空格时,不应显示标题。

问题:html中的空格呈现为<p>&nbsp; &nbsp;</p>,因此从技术上讲,它不是空值或空白值

我根本不能!String.IsNullOrWhiteSpace(Model.ContentField.Value),因为它确实有一个值,尽管是空格html。

我尝试将值转换为@Html.Raw(Model.ContentField.Value),但它的类型为 HtmlString ,因此我无法使用String.IsNullOrWhiteSpace

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:6)

您可以使用HtmlAgilityPack,如下所示:

HtmlDocument document = new HtmlDocument();
document.LoadHtml(Model.ContentField.Value);
string textValue = HtmlEntity.DeEntitize(document.DocumentNode.InnerText);
bool isEmpty = String.IsNullOrWhiteSpace(textValue);

答案 1 :(得分:4)

我最终做了什么(因为我不想为此添加第三方库),是在一个帮助类中添加一个删除HTML标记的函数:

const string HTML_TAG_PATTERN = "<.*?>";

public static string StripHTML(string inputString)
{
    return Regex.Replace
    (inputString, HTML_TAG_PATTERN, string.Empty);
}

之后,我将其与HttpUtility.HtmlDecode合并以获得内在值:

var innerContent = StringHelper.StripHTML(HttpUtility.HtmlDecode(Model.ContentField.Value));

这个变量就是我用来比较的。如果这是一个坏主意,请告诉我。

谢谢!

答案 2 :(得分:0)

我有与您的标题类似的问题,但就我而言,html字符串为空。所以我最终做了以下事情:

HtmlString someString = new HtmlString("");
string.IsNullOrEmpty(someString.ToString());

可能很明显,但起初并没有意识到。