【问题标题】:Can't access ViewDataDictionary object properly on StringTemplate无法在 StringTemplate 上正确访问 ViewDataDictionary 对象
【发布时间】:2012-06-28 11:17:47
【问题描述】:

我正在使用 StringTemplate 版本 3.1.4.6002 作为 MVC 项目的视图引擎。我似乎无法访问传递给模板的对象并将其呈现在网页上。所以基本上,我在控制器中有以下内容(在 C# 中):

var layer1 = new { count = "1", label = "Description" };
var layer2 = new { count = "2", label = "Transcription" };
ViewData["layers"] = new object[] {layer1,layer2};

在视图文件 test.st 上,我有:

$layers:{
   $it.count$
   $it.label$
}$

模板不会在网页上显示任何内容,但如果我在 test.st 上这样做:

$layers$

它将对象显示为:

{ count=1, label=Description } { count=2, label=Transcription }

在我看来就像一个字符串。那么如何单独访问计数和标签呢?我已经用谷歌搜索了很多,似乎找不到任何可以解决我的问题的东西。

顺便说一下,我使用的是 Visual Studio V10 和 .NET Framework Version4。在项目中,我引用了 Antlr3.Runtime、Antlr3.Runtime.Debug 和 Antlr3.StringTemplate dll。此外,访问简单的字符串对象也没有问题。我使用了here 中的教程项目。如果需要,我可以提供更多详细信息。

【问题讨论】:

    标签: viewdata stringtemplate


    【解决方案1】:

    计数和标签字段是公开的吗?或者,如果它们是 getter,它们是公开的吗?

    【讨论】:

    • 非常感谢您为我指明了正确的方向。我将匿名类型 layer1、layer2 和 layer3 转换为具有内部访问权限和公共字段的对象,现在我可以在网页上看到这些值了!顺便说一句,我刚刚发现了 StringTemplate,我真的被它的简单性所吸引。我们一直在工作中使用 XSLT,我记得它有一个巨大的学习曲线。将来我可能会在使用它时发布新问题。继续出色的工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多