Невозможно отобразить полный граф объекта JSON с шаблоном Mustache с помощью Nustache

У меня есть простой граф объектов 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}} печатаются пустыми

Я не знаю, что еще попробовать. Навигация по графу объектов не может быть такой сложной. Может кто-нибудь, пожалуйста, дайте мне знать, что я делаю неправильно?


person sellmeadog    schedule 10.01.2012    source источник
comment
Привет, я попробовал это, и ваш 2-й метод определенно работает. jsgroomer.com/4s1gJMK Может, проблема в Nustache?   -  person Gazler    schedule 13.01.2012
comment
Да, я пришел к выводу, что проблема в Nustache, она кажется очень ограниченной по сравнению с другими реализациями Mustache. Если вы отправите в качестве ответа, я приму. Спасибо.   -  person sellmeadog    schedule 14.01.2012


Ответы (1)


Проблемы, которые у меня возникают, определенно связаны с Nustache, как указал Газлер в комментариях. К сожалению, я не могу найти никаких других реализаций Mustache в .NET, поэтому мне, вероятно, придется свернуть свою собственную (или, по крайней мере, добавить в Nustache), чтобы включить ожидаемую функциональность.

person sellmeadog    schedule 08.03.2012