我有一个简单的JSON对象图,我试图使用Nustache
(Nustache.Core
和Nustache.Mvc
)在ASP.NET MVC 3网站中使用Mustache模板进行渲染。
我的对象图表代表一个简单的特许经营列表,每个拥有一个或多个所有者(如果有效和运营),每个所有者包含一个Name对象,包括First,Last,Middle,Suffix,Title:
{
"Count": 39,
"Franchises": [
{
"Id": "81e5e91b-37eb-4f60-ac5f-d2d9a2c1b8fc",
"Name": "My Franchise, Inc.",
"Number": "001",
"Owners": [],
"Status": {
"Id": 4,
"Name": "Terminated"
}
},
{
"Id": "98887526-5b1d-4db9-9ddb-2be2cd6af957",
"Name": "My Other Franchise, Inc.",
"Number": "0002",
"Owners": [
{
"Id": "cffd8de3-aa12-4dbf-b129-0886aea7d1b1",
"Name": {
"FirstName": "James",
"LastName": "Drew",
"MiddleName": null,
"Suffix": null,
"Title": null
}
}
],
"Status": {
"Id": 2,
"Name": "Operating"
}
}.
...
]
}
我的MVC动作方法非常简单。使用WebClient
从服务中获取JSON,使用JavaScriptSerializer
将JSON转换为字典并将其传递给视图:
public ActionResult Index()
{
var json = null as String;
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
using (var client = new System.Net.WebClient())
{
json = client.DownloadString(@"http://my.service.com/franchises");
}
return PartialView(serializer.Deserialize<Dictionary<string, object>>(json));
}
这是我的基本Mustache模板:
<ul>
{{#Franchises}}
<li><a id="{{Id}}" href="/franchises/details/{{Id}}">{{Number}}</a>
{{#Owners}}
TODO: Print Name Here
{{/Owners}}
</li>
{{/Franchises}}
</ul>
我遇到的问题是打印每个所有者的名字。该模板呈现除了所有者名称之外的所有内容,我尝试了几个模板变体而没有运气;将TODO: Print Name Here
替换为:
{{Name}}
为每个所有者对象打印System.Collections.Generic.Dictionary'2[System.String,System.Object]
{{#Name}}{{FirstName}} {{LastName}}{{/Name}}
打印空白
{{> Name}}
或{{#Name}}{{FirstName}} {{LastName}}{{/Name}}
的模板的 {{FirstName}} {{LastName}}
打印空白
{{Name.FirstName}}
或{{Name/FirstName}}
打印空白
我不知道还有什么可以尝试的。在对象图中导航并不困难。有人可以让我知道我做错了吗?
答案 0 :(得分:0)
Gazler在评论中指出,我所遇到的问题肯定在Nustache内部。不幸的是,我似乎无法在.NET中找到任何其他的Mustache实现,所以我可能不得不自己动手(或者至少添加到Nustache)以启用预期的功能。