我正在尝试使用Nustache,以便我可以在ASP.Net Web应用程序中共享后端和前端代码之间的渲染模板。当我将一个对象传递给一个模板时,它工作正常,但我无法弄清楚如何让它渲染一个集合。所以,如果我有这样的模板:
{{#RenderItems}}
<th data-warning="{{WarningLevel}}" data-limit="{{LimitLevel}}">{{TotalHours}}</th>
{{/RenderItems}}
然后我想传入一组对象并获取一组th
元素。
我尝试过的事情:
WarningLevel
,LimitLevel
和TotalHours
的类,将对象添加到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
它呈现任何东西的唯一方法是,如果我使用匿名类,但我不能让它用我所做的命名项填充模板。我确定我在这里遗漏了一些相当明显的东西,因为我认为这应该是直截了当的,但文档中说“查看代码和测试”但我无法确定哪个测试实际上是在处理这种情况。有人可以指出我正确的方向,或提供一些示例代码吗?
答案 0 :(得分:8)
我能够使用以下类和控制器操作:
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回购中提取了最新的更改。