首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用DotLiquid模板引擎处理Enum

用DotLiquid模板引擎处理Enum
EN

Stack Overflow用户
提问于 2014-09-30 14:48:10
回答 1查看 1.3K关注 0票数 0

我目前正在做一个Web项目,我需要能够发送一封电子邮件。我开始为模板引擎使用DotLiquid,但我发现了它的某些问题,最大的问题是它似乎无法处理枚举。

我试图将该类型注册为“安全”类型,比如Template.RegisterSafeType(typeof(Gender), new string[] { "Male", "Female" });,但它似乎不起作用。充其量,不再抛出任何异常,但预期结果为空。

代码语言:javascript
复制
<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对象中“转换”枚举,因为这可能会在稍后引起混淆。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-30 17:24:22

好吧,如果有人对此感兴趣的话,我找到了答案。

注册该类型时,还可以根据所采取的重载情况,将Func<object,object>指定为第二个或第三个参数。此函数允许您指定转换值。

所以,在我的例子中,您可以这样做:

代码语言:javascript
复制
Template.RegisterSafeType(typeof(Gender), o => o.ToString());

它开始起作用了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26123767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档