2014-09-30 4 views
0

현재 이메일을 보낼 수 있어야하는 웹 프로젝트에서 작업 중입니다. 나는 템플릿 엔진을 위해 DotLiquid를 사용하기 시작했으나 특정 문제를 발견했다. 가장 큰 것은 열거 형을 처리 할 수없는 것 같다.DotLiquid 템플릿 엔진으로 Enum 처리하기

Template.RegisterSafeType(typeof(Gender), new string[] { "Male", "Female" });과 같이 "안전"유형을 등록하려고했지만 작동하지 않습니다. 기껏해야 예외가 더 이상 throw되지 않지만 예상 된 결과는 비어 있습니다.

<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

안녕하세요. 이 부분이 효과가 있습니까? '{% if f.Gender == Male %}' 비슷한 방법을 시도했지만 열거 형 값 'Male'또는 'Gender.Male'이 인식되지 않는 것 같습니다. – janonimus

관련 문제