Не удается правильно получить доступ к объекту ViewDataDictionary в StringTemplate

Я играю с StringTemplate версии 3.1.4.6002 в качестве механизма просмотра для проекта MVC. Кажется, я не могу получить доступ к объекту, передаваемому в шаблон, и отображать его на веб-странице. Итак, в контроллере (на С#) у меня есть следующее:

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. Кроме того, у меня нет проблем с доступом к простым строковым объектам. Я использовал учебный проект в здесь. Я могу предоставить более подробную информацию, если требуется.


person Noble_Bright_Life    schedule 28.06.2012    source источник


Ответы (1)


Являются ли поля счетчика и метки общедоступными или, если они геттеры, общедоступны?

person Terence Parr    schedule 28.06.2012
comment
Большое спасибо за то, что указали мне правильное направление. Я преобразовал анонимные типы layer1, layer2 и layer3 в объекты с внутренним доступом и публичными полями, и теперь я могу видеть значения на веб-странице! Между прочим, я только что открыл для себя StringTemplate, и я действительно в восторге от его простоты. Мы использовали XSLT на работе, и я помню, что у него была огромная кривая обучения. Я мог бы опубликовать новые вопросы в будущем, как я использую его. Продолжайте в том же духе! - person Noble_Bright_Life; 01.07.2012