StringTemplate C#elseif bug?

时间:2015-01-16 10:56:59

标签: c# stringtemplate texttemplate

我使用StringTemplate 版本3

我有以下模板:

<html>
  <head>
    <title>Test</title>
    <style>
        .done-ok {          
            background-color    : LawnGreen         
        }
        .done-ignore {                
            background-color    : Orange         
        }
        .done-fail {                
            background-color    : OrangeRed         
        }           
    </style>
  </head>
  <body class="$if(failedNonEmpty)$done-fail$elseif(needsAttentionNonEmpty)$done-ignore$else$done-ok$endif$">
  </body>
</html>

我使用以下代码:

    var stg = new StringTemplateGroup(templateName, new FileSystemTemplateLoader(Path.Combine(locationRoot, templateFolder)));
    var st = stg.GetInstanceOf(templateName);

    st.SetAttribute("passedNonEmpty", !true);
    st.SetAttribute("failedNonEmpty", !true);
    st.SetAttribute("needsAttentionNonEmpty", !true);

    var content = st.ToString();

当我编译代码时,everthing是可以的。奇怪的是当我将第二个属性更改为:

st.SetAttribute("failedNonEmpty", true);

然后我突然在st.ToString()行上得到异常说: 模板中没有文字'elseif'

任何有相同问题或知道解决方案的人?

1 个答案:

答案 0 :(得分:0)

据我所知,ST3中没有其他东西(而且它真的很痛苦)。 虽然ST4有它。

编辑:

事实上,在3.1中添加了elseif(不确定它是否有效)

源: https://theantlrguy.atlassian.net/wiki/display/ST/3.1+Release+Notes