使用DotLiquid模板引擎处理枚举
本文关键字:处理 枚举 引擎 DotLiquid 使用 | 更新日期: 2023-09-27 18:25:02
我目前正在处理一个Web项目,需要能够发送电子邮件。我开始使用DotLiquid作为模板引擎,但我发现它存在某些问题,最大的问题是它似乎无法处理枚举。
我试着像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对象中"转换"枚举,因为这可能会在以后引起混淆
谢谢。
好的,所以如果有人感兴趣,我找到了答案。
当您注册类型时,您还可以根据所采用的重载将Func<object,object>
指定为第二个或第三个参数。此函数允许您指定转换值。
所以,在我的例子中,你可以这样做:
Template.RegisterSafeType(typeof(Gender), o => o.ToString());
它开始发挥作用。