2014-09-30 2 views
0

В настоящее время я работаю над веб-проектом, для которого мне нужно отправить электронное письмо. Я начал использовать DotLiquid для механизма шаблонов, но я обнаружил некоторые проблемы с ним, самым большим из которых является то, что он, похоже, не способен обрабатывать перечисления.Обработка перечислений с помощью DotLiquid templating engine

Я попытался зарегистрировать тип как «безопасный», как этот Template.RegisterSafeType(typeof(Gender), new string[] { "Male", "Female" });, но он не работает. В лучшем случае больше не возникает никаких исключений, но ожидаемый результат пуст.

<ul> 
    {% for f in Model.Friends %} 
     {% if f.Gender == Male %} 
      <li> 
       {{ f.FirstName }} {{ f.LastName }} {{ f.Gender }} 
      </li> 
     {% endif %} 
    {% endfor %} 
</ul> 

<ul> 
    {% for f in Model.Friends %} 
     {% if f.Gender == Gender.Male %} 
      <li> 
       {{ f.FirstName }} {{ f.LastName }} {{ f.Gender }} 
      </li> 
     {% endif %} 
    {% endfor %} 
</ul> 

<ul> 
    {% for f in Model.Friends %} 
     {% if f.Gender == 0 %} 
      <li> 
       {{ f.FirstName }} {{ f.LastName }} {{ f.Gender }} 
      </li> 
     {% endif %} 
    {% endfor %} 
</ul> 

Ничто из перечисленного не могло ничего вернуть. Я был бы доволен строкой или int-представлением перечисления, но на данный момент ничего нет. Кто-нибудь нашел решение этой проблемы?

Я хотел бы избежать «преобразовать» перечисление себя в объект «Drop», так как это может смутить позже.

спасибо.

ответ

3

Хорошо, поэтому я нашел ответ, если кто-то заинтересован в нем.

При регистрации типа вы также можете указать Func<object,object> в качестве второго или третьего параметра в зависимости от перегрузки, которую вы берете. Эта функция позволяет указать значение преобразования.

Итак, в моем примере, вы можете сделать это:

Template.RegisterSafeType(typeof(Gender), o => o.ToString()); 

И он начинает работать.

+0

Hi. Работает ли эта часть? '{% if f.Gender == Male%}' Я пробовал аналогичным образом, но значение перечисления 'Male' или 'Gender.Male', похоже, не распознается. – janonimus

Смежные вопросы