StringTemplate:内容[匿名]属性字符串Isn' t定义

时间:2015-01-04 01:50:32

标签: c# template-engine stringtemplate

有兴趣了解一下StringTemplate引擎,并创建一个HTML页面,可以在Visual Studio 2013中使用C#来使用StringTemplate。

我已经进行了相当广泛的搜索,但是已经能够将一些简单的代码放在一起,这些代码将能够使用库,但是我收到了一个运行时错误说明。

内容[匿名]属性字符串未定义

我以为我已经在正确的位置和正确的文件路径中添加了分隔符,但似乎仍然遇到此错误,我仍然是编程的新手,我错过了我的代码中明显的东西吗?

我一直在努力寻找关于图书馆,视频示例等的广泛信息。

提前致谢。

我在下面添加了代码。

static void Main(string[] args)
    {

        var System = new Program(); 
        System.HelloWorld();
        Console.ReadLine();

    }



 public string HelloWorld()
    {
        Template template;

        var path = @"C:\TemplateTester\index.st";
        var file = new FileInfo(path);
        using (StreamReader reader = file.OpenText())
            template = new Template(reader.ReadToEnd(), '$', '$'); // custom delimeter (defaults are "<" and ">")

        template.Add("title", "Hello World!");
        template.Add("array", new string[] { "Record A", "Record B", "Record C" });
        template.Add("object", new { PropertyA = "A", PropertyB = "B" });

        return template.Render();
    }

我的ST档案

  <html>
   <body>
    <h1>Hello World</h1>
    $! file: C:\TemplateTester\index.st !$
    String: 
    $string$

    Array:
    $array:{it|$it$ ($i$)};separator=", "$

    Object:
    Property A = $object.PropertyA$
    Property B = $object.PropertyB$
   </body>
  </html>

由于我当前的声誉,我无法添加我的FilePath图像,但是,ST文件只是位于Application文件夹中,因为路径会建议使用visual studio文件。程序文件夹中的外部(包含bin,obj,属性等)和Package文件夹(包含Antlr引用)。

1 个答案:

答案 0 :(得分:2)

模板文件包含表达式$string$,但您没有使用string方法定义template.Add属性的值,就像您对title所做的那样,{{ 1}}和array