【问题标题】:Unable to render full JSON object graph with Mustache template using Nustache无法使用 Nustache 使用 Mustache 模板呈现完整的 JSON 对象图
【发布时间】:2012-01-10 18:27:25
【问题描述】:

我有一个简单的 JSON 对象图,我正在尝试使用 NustacheNustache.CoreNustache.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}} 打印空白

  • {{&gt; Name}} 指向带有{{#Name}}{{FirstName}} {{LastName}}{{/Name}}{{FirstName}} {{LastName}} 的模板都打印空白

  • {{Name.FirstName}}{{Name/FirstName}} 都打印空白

我不知道还能尝试什么。在对象图中导航不会那么困难。有人可以告诉我我做错了什么吗?

【问题讨论】:

  • 您好,我试过了,您的第二种方法确实有效。 jsgroomer.com/4s1gJMK也许问题出在Nustache?
  • 是的,我得出的结论是 Nustache 是问题所在,与 Mustache 的其他实现相比,它似乎非常有限。如果您提交作为答案,我会接受。谢谢。

标签: json asp.net-mvc-3 mustache


【解决方案1】:

正如 Gazler 在 cmets 中指出的那样,我遇到的问题肯定在 Nustache 中。不幸的是,我似乎无法在 .NET 中找到 Mustache 的任何其他实现,因此我可能不得不推出自己的(或至少添加到 Nustache)以启用预期的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2018-09-03
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多