我遇到了一种情况,我有一个值${test}
,在我呈现这个值的组件模板中,当另一个模板调用这个组件和模板时,问题就出现了,此时使用@@RenderComponentPresentation(Component.ID, MyFirstTemplate)@@
的${test}
是被评估的,因为有在组件上或在它评估为无的包装中没有此类项目。
我有一个组件模板,它读取组件字段的值(其中包含
${test}
:)- 这个模板渲染得很好,我回来了“${test}”
现在我有调用的组件模板二
@@RenderComponentPresentation(Component.ID, ComponentTemplateOne.ID)@@
- 这是
${test}
now 被评估而不是保留的地方,因此它从“”变为${test}
“”,因为它没有找到具有该名称的变量或组件字段名称。
- 这是
组件模板二然后被组件模板三以相同的方式调用
@@RenderComponentPresentation(Component2.ID, ComponentTemplateTwo.ID)@@
- 由于
${test}
已经在组件模板二中评估并丢失了,因此我不再${test}
以“”结束。
- 由于
我努力了:
@@RenderComponentField('myField', 0, False, False)@@
@@RenderComponentField('myField', 0, True, False)@@
@@RenderComponentField('myField', 0, False, True)@@
没运气。
以下是我的工作,它似乎工作:
- 将“\”放在打开和关闭花括号的前面
$\{test\}
- 我需要确保在最后一个模板(页面或组件)执行后删除“\”。
- 我现在有一个 C# TBB,它接受“${test}”并对其执行以下操作:
- 将初始模板中的
${test}
to 转换$\{test\}
为页面模板上的 C# TBB,然后将其返回为 的初始值${test}
。
- 将初始模板中的
有没有办法防止这种情况发生或避免做我正在做的事情来完成这项工作?