C# 斑马条纹内置到stringtemplate?

C# 斑马条纹内置到stringtemplate?,c#,stringtemplate,C#,Stringtemplate,在本例中,我在传递到模板之前使用代码进行条带化,我只是想确保我没有丢失一些已经内置的stringtemplate功能 using System; using System.Linq; using Antlr.StringTemplate; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Tests { [TestClass] public class RandomTests {

在本例中,我在传递到模板之前使用代码进行条带化,我只是想确保我没有丢失一些已经内置的stringtemplate功能

using System; using System.Linq; using Antlr.StringTemplate; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Tests { [TestClass] public class RandomTests { [TestMethod] public void has_a_table() { var users = new[] { new { LastName = "Doe", FirstName = "John", Age = 30 }, new { LastName = "Smith", FirstName = "Bob", Age = 28 } }; var columns = new[] { new { Template = "$it.LastName$", Head = "Last Name" }, new { Template = "$it.FirstName$", Head = "First Name" } }; var tableTemplate = @" <table> <thead> <tr> <th scope=""col"">Index</th> $columns: { column |<th scope=""col"">$colum n.Head$</th>}$ </tr> </thead> <tbody> $items:{ item |<tr$if(item.Stripe)$ class=""alt""$endif$><td>$i$</td>$item.Item:row()$</tr>}$ </tbody> </table> "; var rowTemplate = string.Join ( "", (from column in columns select "<td>" + column.Template + "</td>" ).ToArray() ); var templates = new StringTemplateGroup("table-templator"); templates.DefineTemplate("table", tableTemplate); templates.DefineTemplate("row", rowTemplate); var template = templates.GetInstanceOf("table"); var items = users .Select((item, index) => new { Stripe = index % 2 == 0, Item = item }) .ToArray(); template.SetAttribute("columns", columns); template.SetAttribute("items", items); var actual = template.ToString(); Assert.IsNotNull(actual); } 使用制度; 使用System.Linq; 使用Antlr.StringTemplate; 使用Microsoft.VisualStudio.TestTools.UnitTesting; 命名空间测试 { [测试类] 公开课随机测试 { [测试方法] public void有一个表() { var users=new[]{ 新的{LastName=“Doe”,FirstName=“John”,年龄=30}, 新的{LastName=“Smith”,FirstName=“Bob”,年龄=28} }; var columns=new[]{ 新建{Template=“$it.LastName$”,Head=“LastName”}, 新建{Template=“$it.FirstName$”,Head=“First Name”} }; var tableTemplate=@” 指数 $columns:{column |$column.Head$}$ $items:{item |$i$$item.item:row()$}$ "; var rowTemplate=string.Join ( "", (从列中的列) 选择 “”+列。模板+“” ).ToArray() ); var templates=新的StringTemplateGroup(“表模板器”); templates.DefineTemplate(“表”,tableTemplate); templates.DefineTemplate(“行”,行模板); var template=templates.GetInstanceOf(“表”); 变量项=用户 .Select((项,索引)=>new{Stripe=index%2==0,项=item}) .ToArray(); SetAttribute(“列”,列); template.SetAttribute(“items”,items); var actual=template.ToString(); Assert.IsNotNull(实际值); }
我不是StringTemplate的专家,但我认为这似乎提供了一个比您现在拥有的更简单的解决方案。

有一篇不错的帖子,也许您可以在那里找到最简单的解决方案:


链接已断开:(@fernandopasik我认为邮件列表中提到的主题是(至少url几乎相同)