簡體   English   中英

如何使用Nustache渲染對象集合?

[英]How do I render a collection of objects with Nustache?

我正在嘗試使用Nustache,以便可以在ASP.Net Web應用程序的后端和前端代碼之間共享渲染模板。 當我只是將一個對象傳遞給模板時,它工作正常,但我不知道如何獲取它以呈現集合。 因此,如果我有這樣的模板:

{{#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而不是列表
  • 使用字典字典-因此每個項目本身就是具有上述屬性的字典

唯一呈現任何內容的唯一方法是使用匿名類,但是無論如何我都無法使用命名項填充模板。 我肯定我在這里遺漏了一些相當明顯的東西,因為我認為這應該很簡單,但是文檔說“看一下代碼和測試”,但是我無法弄清楚哪個測試實際上正在處理這種情況。 有人可以為我指出正確的方向,還是提供一些示例代碼?

我可以通過以下類和控制器操作來實現此目的:

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 = "albert@email.com" },
        new Person { Name = "Bob Becker", Email = "bob@email.com" },
        new Person { Name = "Charles Charles", Email = "charles@email.com" }
    };

    ViewData["People"] = people;

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

    return viewResult;
}

然后Index.nustache:

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

請注意,今天早上我從Nustache存儲庫中提取了最新更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM