2012-04-18 23 views
6

Ich habe einige Probleme beim Zugriff auf Variablen, hier in diesem Fall Setvariable. Wenn ich in eine interne Schleife gehe, existiert die Variable nicht. Jeder hat einen Einblick darauf. Schätzen Sie Ihre HilfeLooping und TemplateRepeatIndex in Dreamweaver-Vorlage

Unten ist mein Codeabschnitt in der Vorlage. Würden Sie bitte helfen, wenn Sie eine Chance bekommen? Vielen Dank.

<!-- 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 --> 

Ausgabe

Variable Added Successfully 
Inline Value 0 
Inside Loop Value Variable doesn't exist 

Mein dwt Code

[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"; 
    } 

Antwort

5

Probleme mit Variablen in Schleifen und sogar documented gut bekannt.

Grundsätzlich wird die erste Schleife bereits zum Zeitpunkt der Variableneinstellung ausgewertet, so dass Sie immer um eins ausgeschaltet sind.

  • Set Variable i = 0
  • Schleifeniteration 1, i = null
  • Schleifeniteration 2, i = 0
  • Schleifeniteration 3, i = 1
  • etc
+0

Danke Nuno für die Informationen. Das hilft! –

+0

Vielleicht möchten Sie es als die Antwort dann markieren, damit es anderen mit der gleichen Frage hilft. –