0

私は現在、電子メールを送信できるようにする必要がある Web プロジェクトに取り組んでいます。テンプレート エンジンに DotLiquid を使用し始めましたが、特定の問題が見つかりました。最大の問題は、enum を処理できないように見えることです。

という感じで型を「Safe」として登録しようとしたの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 オブジェクトで列挙型を自分で「変換」することは避けたいと思います。

ありがとうございました。

4

1 に答える 1

3

わかりましたので、誰かがそれに興味を持っているなら、私は答えを見つけました.

型を登録するときに、Func<object,object>取得するオーバーロードに応じて、a を 2 番目または 3 番目のパラメーターとして指定することもできます。この関数を使用すると、変換値を指定できます。

したがって、私の例では、これを行うことができます:

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

そして、それは働き始めます。

于 2014-09-30T17:24:22.020 に答える