2015-02-27 4 views
1

Я использую DotLiquid для некоторых шаблонов электронной почты в своем приложении ASP.NET 4.0 Webforms, и я пытаюсь исключить определенный раздел одного из моих сообщений электронной почты шаблоны, если заданная строка в объекте данных, который я привязываю к шаблону, является пустой или пустой.DotLiquid - проверка строки «null или empty»

Проверка NULL работает довольно красиво:

{% if MyString != null %} 

Some fancy label: {{ MyString }} 
{% endif %}"; 

Однако, все, что я пытался также включать пустую строку в этом тесте не удалось до сих пор:

{% if MyString != null or MyString == empty %} 

{% if MyString != null or MyString == '' %} 

Как может Я проверяю «если эта строка пустая или пустая»?

+0

Вы, вероятно, следует использовать двойные кавычки ('MyString == ""'), другая ошибка, скорее всего, в вашей логике. Вы говорите: «Если MyString не является нулевым, или MyString is '' (пустой), тогда покажите эту область« по существу ». Я думаю, вы имеете в виду: '{% if MyString! = Null и MyString! =" "%}' –

+0

@mark_s Вы изменили свое утверждение, как я предложил? ('{% if MyString! = null и MyString! =" "%}') –

+0

@EBrown: извините - я пропустил это - и ** да **, теперь это работает! Пожалуйста, напишите как ответ, чтобы я мог принять его! –

ответ

8

После обсуждения в комментариях, это была простая логическая ошибка.

{% if MyString != null and MyString != "" %}

+0

Спасибо за дополнительную пару глаз, чтобы сделать это ошибка мелкая :-) –

0

было бы:

MyString == String.Empty 

Просто глядя на то, как DotLiquid вычисляет выражения:
https://github.com/dotliquid/dotliquid/blob/master/src/DotLiquid/Condition.cs

+0

Не работает для меня :-(Тот же результат - хотя моя строка данных - 'string.Empty', раздел, который я хочу исключить, по-прежнему отображается в результате –

2

Есть некоторые встроенные функции для обработки этого.

String.IsNullOrEmpty

и

String.IsNullOrWhiteSpace

+0

Я собираюсь предположить, что она будет выглядеть как {% if String.IsNullOrEmpty (MyString)%}. Но я никогда не использовал эту библиотеку, поэтому я не могу быть уверен. –

+0

Спасибо, Брэдли - да, действительно, этот синтаксис просто работает - отлично знать! Документация DotLiquid немного худшая время от времени, и более общие документы Liquid, конечно, не говорят о специфике .NET. Замечательно знать, что эти функции доступны в DotLiquid и работают так, как ожидалось! –