我有一个包装器,只要它有一个值就会在字段中添加标题。该字段实际上是一个字符串,用于保存来自tinymce文本框的HTML。
要求:当字段为空或只是空格时,不应显示标题。
问题:html中的空格呈现为<p> </p>
,因此从技术上讲,它不是空值或空白值
我根本不能!String.IsNullOrWhiteSpace(Model.ContentField.Value)
,因为它确实有一个值,尽管是空格html。
我尝试将值转换为@Html.Raw(Model.ContentField.Value)
,但它的类型为 HtmlString ,因此我无法使用String.IsNullOrWhiteSpace
。
有什么想法吗?谢谢!
答案 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());
可能很明显,但起初并没有意识到。