我正在检查我的表单中是否存在数据如果数据不存在我想将其分配给O.我该怎么做呢。
<cfif not isDefined("FORM.Age")>
cfset FORM.Age = "0"
<cfif>
答案 0 :(得分:17)
通常,最佳做法是避免使用isDefined。这是因为isDefined将搜索所有范围,直到找到匹配的变量。因此使用structKeyExists更有效,例如:
<cfif NOT structKeyExists(form, "age")>
<cfset form.age = 0>
</cfif>
另外,实现此目的的另一种方法是使用cfparam,并指定0作为默认值:
<cfparam name="form.age" default="0">
答案 1 :(得分:7)
你快到了:
<cfif not isDefined("FORM.Age")>
<cfset Form.Age = 0>
</cfif>
答案 2 :(得分:3)
从技术上讲,一旦将cfset
括在标记<
和>
中,您所拥有的就可以了。假设遗漏只是一个错字,你是否可以尝试将其与文本字段一起使用?
提交时始终存在文本字段。该值可以是空字符串,但字段本身仍然存在,因此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)>
答案 3 :(得分:0)
实际上有两件事你想要确保。首先,通过提交正确的表格确保此页面已到达。接下来,确保您具有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>