有人知道如何将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}]}
由于
答案 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 嵌套对象和数组