【问题标题】:How to make Mustache logic tags functional如何使 Mustache 逻辑标签起作用
【发布时间】:2018-07-03 21:06:11
【问题描述】:

我目前正在使用 C# 创建/解析一个 JSON 文件,然后使用它来填充一个小胡子模板。

我已经使用 Nustache 的 NuGet 包将 Nustache 安装到 VB 中。

我的 JSON 文件如下所示:

{
  "LinkName": "test",
  "TESTBOOL": true,
  "NodeProfileENUM": "TEST",
  "Requester": false,
  "Responder": false,
  "Nodes": {
    "Root": {
      "nodeName": "Root",
      "displayName": null,
      "type": null,
      "initialValue": null,
      "serializable": null,
      "className": null,
      "enumName": null,
      "isLast": true,
      "actionList": {}
    }
  },
  "LinkActions": {}
}

在我的模板中,我尝试使用以下标签:

{{#TESTBOOl}} test {{/TESTBOOL}}

但我不断收到一条错误消息,提示该块未注册,

我也尝试过遍历节点部分:

{{#each Nodes}}
{{#each this}}
{{this.nodeName}}
{{/each}}
{{/each}}

但这也不起作用。

我正在解析和渲染 json 和模板 (C#),如下所示:

string nodeProfileFormat = File.ReadAllText("NodeProfileTemplate2.txt");

JObject parsedLinkTest = 
JObject.Parse(File.ReadAllText("LinkDefinitionTest.json"));

string nodeProfileResultTest = 
Nustache.Core.Render.StringToString(nodeProfileFormat, parsedLinkTest);

File.WriteAllText("NodeProfileTemplateResult.java", nodeProfileResultTest);

有什么我忘记做的吗?

【问题讨论】:

    标签: c# json tags mustache nustache


    【解决方案1】:

    要测试您的模板,请使用moustache's demo。如果您修正错字,您的 TESTBOOL 模板就可以工作:

    {{#TESTBOOL}} test {{/TESTBOOL}}
    

    如果你想显示nodeName 你必须这样做:

    {{Nodes.Root.nodeName}}
    

    您的 json 仅包含对象。您的节点不是数组。也许您正在寻找迭代属性。

    关于你的 C#,你可以使用 Nustache FileToFile 方法:

    var parsedLinkTest = JObject.Parse(File.ReadAllText("LinkDefinitionTest.json"));
    Nustache.Core.Render.FileToFile("NodeProfileTemplate2.txt", parsedLinkTest, "NodeProfileTemplateResult.java");
    

    如果失败,请使用调试器检查parsedLinkTest 是否填充良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-03
      • 2011-01-29
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多