我在访问变量时遇到了一些问题,在本例中为 Setvariable。当我进入循环时,变量不存在。任何人都对此有任何见解。感谢您的帮助
下面是我在模板中的代码部分。有机会时能帮忙吗? 谢谢。
<!-- TemplateBeginRepeat name="Component.Fields.section" -->
@@SetVariable("columnSectionIndex", "${TemplateRepeatIndex}")@@
Inline Value @@GetVariable("columnSectionIndex")@@ Variable value can be accessed
<!-- TemplateBeginRepeat name ="Field.links" -->
Inside Loop Value @@GetVariable("columnSectionIndex")@@ //Not getting declared variable //value here. Says variable doesn’t exist in ContextVariables.
<!-- TemplateBeginRepeat name ="Field.linkimages" -->
<!-- TemplateEndRepeat -->
<!-- TemplateEndRepeat -->
<!-- TemplateEndRepeat -->
输出
Variable Added Successfully
Inline Value 0
Inside Loop Value Variable doesn't exist
我的 dwt 代码
[TemplateCallable()]
public string SetVariable(string variableName, string value)
{
//Remove the old variable and set the new variable
if (_Engine.PublishingContext.RenderContext.ContextVariables.Contains(variableName))
{
_Engine.PublishingContext.RenderContext.ContextVariables[variableName] = value;
return "Variable Modified Successfully";
}
else
{
_Engine.PublishingContext.RenderContext.ContextVariables.Add(variableName, value);
return "Variable Added Successfully";
}
}
[TemplateCallable()]
public string GetVariable(string variableName)
{
//Get the varialbe
if (_Engine.PublishingContext.RenderContext.ContextVariables.Contains(variableName))
return _Engine.PublishingContext.RenderContext.ContextVariables[variableName].ToString();
else
return "Variable doesn't exist";
}
循环中变量的问题众所周知,甚至被记录在案。
基本上,在您设置变量时,第一个循环已经计算完毕,因此您将始终偏离一个。
- 设置变量 i=0
- 循环迭代 1,i=null
- 循环迭代 2,i=0
- 循环迭代 3,i=1
- 等
这可能会有所帮助:http://www.tridiondeveloper.com/get-and-set-variables-in-dwts