2012-01-10 10 views
0

単純なJSONオブジェクトグラフがあります。NustacheNustache.CoreおよびNustache.Mvc)を使用してASP.NET MVC 3サイトでMustacheテンプレートを使用してレンダリングしようとしています。Nustacheを使用してMustacheテンプレートで完全なJSONオブジェクトグラフをレンダリングできない

マイオブジェクトグラフは、フランチャイズの単純なリストを表し(アクティブおよびオペレーティング場合)それぞれが1つまたは複数の所有者を持っており、それぞれの所有者はまず、最終、中東、接尾辞、タイトルと名前のオブジェクトが含まれています

{ 
    "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アクションメソッドは非常に簡単です。サービスからJSONをつかむためにWebClientを使用して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> 

問題は私が持っているそれぞれの所有者の名前を印刷している。テンプレートは所有者の名前を除いてすべてをレンダリングし、私は運がないいくつかのテンプレートのバリエーションを試しました。

  • {{Name}}各所有者オブジェクトのプリントアウトSystem.Collections.Generic.Dictionary'2[System.String,System.Object] {{#Name}}{{FirstName}} {{LastName}}{{/Name}}又は{{FirstName}} {{LastName}}とテンプレートの両方の印刷を指す

  • {{> Name}}ブランク

  • {{#Name}}{{FirstName}} {{LastName}}{{/Name}}印刷ブランク

  • :でTODO: Print Name Hereを交換{{Name.FirstName}}または{{Name/FirstName}}ブランクを印刷

私は他に何を試していいのですか?オブジェクトグラフをナビゲートすることは、これほど難しいことではありません。誰かが私が間違っていることを教えてもらえますか?

+0

こんにちは、私はこれを試して、あなたの2番目の方法は間違いなく動作します。 http://jsgroomer.com/4s1gJMK多分問題はヌスタチェにありますか? – Gazler

+0

はい、私はNustacheが問題であるという結論に達しました.Mustacheの他の実装に比べて非常に限られているようです。あなたが答えとして提出すれば、私は受け入れます。ありがとう。 – sellmeadog

答えて

0

コメントにGazlerが指摘しているように、私が持っている問題は間違いなくNustacheの中にある。残念ながら、.NETのMustacheの他の実装を見つけることはできないようですので、期待される機能を有効にするために自分で(あるいは少なくともNustacheに追加する)必要があります。