У меня есть простой граф объектов JSON, который я пытаюсь отобразить с помощью шаблона Mustache на сайте ASP.NET MVC 3, используя Nustache
(Nustache.Core
и Nustache.Mvc
).
Мой граф объектов представляет собой простой список франшиз, у каждой из которых есть один или несколько владельцев (если они активны и работают), и каждый владелец содержит объект 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));
}
А вот мой базовый шаблон Усов:
<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}}
печатаются пустыми
Я не знаю, что еще попробовать. Навигация по графу объектов не может быть такой сложной. Может кто-нибудь, пожалуйста, дайте мне знать, что я делаю неправильно?