0

我使用 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();

当我编译代码时一切正常。奇怪的是当我将第二个属性更改为:

st.SetAttribute("failedNonEmpty", true);

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

谁有同样的问题或知道解决方案?

4

1 回答 1

0

据我所知,ST3 中没有 elseif(这真的很痛苦)。ST4虽然有。

编辑:

实际上 elseif 是在 3.1 中添加的(不确定它是否有效)

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

于 2015-01-21T12:25:38.333 回答