2011-06-21 23 views
0

Nustacheを使用して、ASP.Net Webアプリケーションでバックエンドとフロントエンドのコードの間でレンダリングテンプレートを共有できるようにしようとしています。オブジェクトをテンプレートに渡すだけでうまくいきますが、コレクションをレンダリングする方法を理解できません。Nustacheでオブジェクトのコレクションをレンダリングするにはどうすればよいですか?

{{#RenderItems}} 
    <th data-warning="{{WarningLevel}}" data-limit="{{LimitLevel}}">{{TotalHours}}</th> 
{{/RenderItems}} 

は、その後、私はオブジェクトのコレクションを渡すとth要素のセットを取得したい:私はこのようなテンプレートを持っているのであれば。

物事私が試した:

  • は、プロパティWarningLevelLimitLevelTotalHoursを持つクラスを作成Listにオブジェクトを追加し、その直接渡す:Nustache.Core.Render.FileToString(System.Web.HttpContext.Current.Server.MapPath("my.template"), ListOfObjects)
  • を同じことをやって、作成を除きます匿名クラス:Nustache.Core.Render.FileToString(System.Web.HttpContext.Current.Server.MapPath("my.template"), new { RenderItems = ListOfObjects})
  • 同じオブジェクトを含むDictionaryを使用するリストの代わりに
  • 辞書の辞書なので、各項目はそれ自体が上記のプロパティを持つ辞書です

匿名のクラスを使用すると、何かをレンダリングする唯一の方法ですが、テンプレートを取り込むことができません私が何をしていても名前のついたアイテムがあります。私はこれが簡単であるべきだと仮定して、ここでかなり明白なものがないと確信していますが、ドキュメンテーションは「コードとテストを見てください」と言っていますが、実際にこのシナリオを扱うテストはできません。誰かが正しい方向に私を指すことができる、またはいくつかの例のコードを提供できますか?

答えて

7

私は、これは以下のクラスとコントローラのアクションで作業を取得することができた:

public class Person { 
    public string Name { get; set; } 
    public string Email { get; set; } 
} 

public ActionResult Index() { 
    var people = new List<Person>() { 
     new Person { Name = "Albert Adams", Email = "[email protected]" }, 
     new Person { Name = "Bob Becker", Email = "[email protected]" }, 
     new Person { Name = "Charles Charles", Email = "[email protected]" } 
    }; 

    ViewData["People"] = people; 

    ViewResult viewResult = View(); 
    viewResult.ViewEngineCollection = new ViewEngineCollection { new NustacheViewEngine() }; 

    return viewResult; 
} 

そしてIndex.nustache:私はNustacheレポから最新の変更を引っ張っ

{{#People}} 
    <p>{{Name}} - {{Email}}</p> 
{{/People}} 

注意今朝。

+0

ありがとう、標準ASP.Netに変換するのは簡単でしょうか?私は 'ViewData'オブジェクトを作成しようと思うでしょうか? – robertc

+0

私はそれを調べなければならないでしょう。私はMVCでNustacheを使用したことがありますが、ViewDataのようなMVC専用の機能にどのように依存しているかはわかりません。 – gram

+1

私は以下のような辞書オブジェクトを定義しました: 'var RenderItems = new Dictionary >();'そしてキーで私のリストを渡すと、それは働いた:) – robertc

関連する問題