7

我有一个表单,它有很多字段,格式为

  • 名称=“字段-1”
  • 名称="字段-2"
  • 名称="字段-3"
  • 名称=“字段-4”
  • ETC....

在表单操作页面上,我希望能够使用循环并能够使用循环的索引与这样的字符串前缀连接<cfset newField = "field-" & #index#>,然后使用#Variables.newField#访问上一页的表单字段。

我一直在玩这个Evaluate()功能,但没有运气。我不怎么使用 ColdFusion,所以我可能只是在语法上有点偏离。

我如何使用它的一个例子是:

<cfset newField = "form.field-" & #index#>
<input type="hidden" 
      name="field-<cfoutput>#index#</cfoutput>" 
      value="<cfoutput>Evaluate(Variables.newField)</cfoutput>">
4

2 回答 2

9

对于这种情况,您根本不必使用评估。只需通过键名访问变量结构。

<cfset newField = "form.field-" & index>
<cfset value = variables[newField]>

要不就

<cfset value = variables["form.field-#index#"]>

或者如果您不想使用中间变量

<cfoutput>#variables["form.field-" & index]#</cfoutput>
于 2013-04-02T17:22:50.700 回答
4

无需将其设置为variables范围。在您的循环中,您可以使用关联数组表示法直接从form范围内访问表单字段值,如下所示:

<input type="hidden" name="field-<cfoutput>#index#</cfoutput>" 
value="<cfoutput>#form['field-' & index]#</cfoutput>">

为了更加安全,明智的做法是在尝试显示每个表单字段之前检查它是否存在:

<cfif structKeyExists(form, 'field-' & index)>
    <!--- display field --->
</cfif>
于 2013-04-02T17:26:10.607 回答