我目前正在做一个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对象中“转换”枚举,因为这可能会在稍后引起混淆。
谢谢。
发布于 2014-09-30 17:24:22
好吧,如果有人对此感兴趣的话,我找到了答案。
注册该类型时,还可以根据所采取的重载情况,将Func<object,object>指定为第二个或第三个参数。此函数允许您指定转换值。
所以,在我的例子中,您可以这样做:
Template.RegisterSafeType(typeof(Gender), o => o.ToString());它开始起作用了。
https://stackoverflow.com/questions/26123767
复制相似问题