我正在尝试检查我的表单中是否存在数据如果数据不存在,我想将其分配给 O。我该怎么做。
<cfif not isDefined("FORM.Age")>
cfset FORM.Age = "0"
<cfif>
我正在尝试检查我的表单中是否存在数据如果数据不存在,我想将其分配给 O。我该怎么做。
<cfif not isDefined("FORM.Age")>
cfset FORM.Age = "0"
<cfif>
通常认为最佳实践是避免 isDefined。这是因为 isDefined 将搜索所有范围,直到找到匹配的变量。所以使用 structKeyExists 效率更高,例如:
<cfif NOT structKeyExists(form, "age")>
<cfset form.age = 0>
</cfif>
此外,实现此目的的另一种方法是使用 cfparam,并将 0 指定为默认值:
<cfparam name="form.age" default="0">
您快到了:
<cfif not isDefined("FORM.Age")>
<cfset Form.Age = 0>
</cfif>
从技术上讲,一旦您将cfset
in 标签<
和>
. 假设遗漏只是一个错字,您是否正在尝试将它与文本字段一起使用?
提交时始终存在文本字段。该值可能是一个空字符串,但该字段本身仍然存在,因此IsDefined
将始终返回 true。如果是这种情况,您需要检查字段长度或值。然后根据您的标准做一些事情,如果它是空的。例如:
<!--- value is an empty string --->
<cfif NOT len(FORM.age)>
do something
</cfif>
... OR
<!--- value is an empty string or white space only --->
<cfif NOT len(trim(FORM.age))>
do something
</cfif>
... OR
<!--- convert non-numeric values to zero (0) --->
<cfset FORM.Age = val(FORM.Age)>
实际上,您需要确保两件事。首先,确保通过提交正确的表单到达此页面。接下来,确保您有一个用于 form.age 变量的数值。以下是您可能希望如何编码的示例:
<cfif StructKeyExists(form, "age") and cgi.http_referrer is what it should be>
<cfif IsNumeric(form.age) and form.age gt 0>
<cfset AgeSubmitted = int(form.age)>
<cfelse>
<cfset AgeSubmitted = 0>
</cfif>
...more code to process form
<cfelse>
...code for when page was not arrived at properly
</cfif>