Невозможно отобразить полный граф объектов JSON с шаблоном Усы, используя Nustache - PullRequest
0 голосов
/ 10 января 2012

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

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

1 Ответ

0 голосов
/ 09 марта 2012

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

...