将json绑定到Handlebar.Net

时间:2016-08-30 20:04:38

标签: c# json.net handlebars.net

有人知道如何将Json数据绑定到HandleBar吗?

以下是来源:https://github.com/rexm/Handlebars.Net

我可以查看这个例子:

string source =
        @"<div class=""entry"">
          <h1>{{title}}</h1>
          <div class=""body"">
            {{body}}
          </div>
        </div>";
        var template = Handlebars.Compile(source);
        var data = new
        {
            title = "My new post",
            body = "This is my first post!"
        };

        var result = template(data);

它工作正常,但我将数据转换为json,而且,我需要在html中进行迭代。 例如,这可能是json:

{"Threshold":12,"Server":[{"Name":"Machine1","CpuUsage":27,"RamUsage":62},{"Name":Machine2","CpuUsage":25,"RamUsage":57}]}

由于

2 个答案:

答案 0 :(得分:0)

****编辑09/01 ****为了澄清,您不需要使用JSON.Net或任何其他实用程序将下面的对象转换为JSON。 Handlebars.Net根据类属性为您做到这一点。

**** ****原始

public class Server
{
    public string Name {get;set;}
    public int CpuUsage {get;set;}
    public int RamUsage {get;set;}
}

public class HandlebarsJson
{
    public int Threshold {get;set;}
    public List<Server> ListOfServers {get;set;}
}

修改上面的代码:

    var template = Handlebars.Compile(source);
    var data = new HandlebarsJson();

    //Code to populate data goes here

    var result = template(data);

您的模板HTML可能如下所示:

"<div class=""entry"">
     <h1>{{Threshold}}</h1>
     <div class=""body"">
     {{#each ListOfServers}}
         <p>{{Name}}</p>
         <p>{{CpuUsage}}</p>
         <p>{{RamUsage}}</p>
     {{/each}}
     </div>
 </div>"

有关&#34;每个&#34;的更多信息帮助可以在这里找到:Built-In Helpers

答案 1 :(得分:0)

也可以使用 json 字符串作为上下文数据而不声明实体类。 我使用了 Newtonsoft.Json 库中的 DeserializeObject 方法和 Handlebars.Net

示例:

string source =
@"<div class=""entry"">
  <h1>{{title}}</h1>
  <div class=""body"">
    {{body}}
  </div>
</div>";

var template = Handlebars.Compile(source);
const string jsonContext = "{ \"title\": \"My new post\", \"body\": \"This is my first post!\" }";
var context = JsonConvert.DeserializeObject(jsonContext);

var result = template(context);

它还支持 JSON 嵌套对象和数组