Проблема в том, что модуль OrchardCore.ContentFields не регистрирует тип TextField
в сервисе Liquid TemplateContext.GlobalMemberAccessStrategy
, что препятствует доступу к любым членам объекта TextField
.
модуль регистрируется DisplayTextFieldViewModel
следующим образом:
TemplateContext.GlobalMemberAccessStrategy.Register<DisplayTextFieldViewModel>();
Мало того, что это не нужно, поскольку LiquidViewTemplate
уже автоматически регистрирует модель, это также мало чем помогает, поскольку вы можете получить доступ только к модели.Field
свойство, но не его Text
свойство.
Например, это даст некоторый вывод:
{{ Model }}
Это также будет:
{{ Model.Field }}
Но, как вы правильно заметили, это не будет:
{{ Model.Field.Text }}
Это явно упущение в Orchard Core, особенно вМодуль ContentFields.
Поскольку вы используете пакеты NuGet, вы, очевидно, не сможете взломать его в исходном коде.Но то, что вы могли бы сделать, это добавить класс Startup
в вашу тему, производный от StartupBase
, и добавить следующий статический конструктор:
static Startup()
{
TemplateContext.GlobalMemberAccessStrategy.Register<TextField>();
}
Убедитесь, что вы ссылаетесь на пакет Nuchet OrchardCore.ContentFields и импортируетеOrchardCore.ContentFields.Fields
пространство имен для вашей темы для компиляции.
После этого вы сможете получить доступ к свойству Text
из вашего шаблона Liquid.
Наконец, я бы порекомендовал вам податьсообщите об ошибке в GitHub, чтобы в конечном итоге вы могли удалить код, который я упоминал, из файла запуска вашей темы.