【发布时间】:2010-11-24 15:41:26
【问题描述】:
我更喜欢 .Net,但我目前工作的网站有一些遗留的经典 ASP 页面。在其中一种形式中,我们有几个隐藏的输入,它们被设置为由页面开头的一些 VBScript 创建和设置的变量,如下所示:
<input name="referer" type="hidden" value="<%= oReferer %>" />
该变量使用以下 VBScript 设置:
<script type="text/vbscript" language="vbscript" runat="server">
dim oReferer
dim origReferer, arrRefer1, arrRefer2
origReferer = "self"
'response.Write("referer - " & Request.ServerVariables("HTTP_REFERER"))
'response.End()
if not Request.ServerVariables("HTTP_REFERER") = "" then
if not Request.ServerVariables("HTTP_COOKIE") = "" then
if not len(Request.Cookies("OrigReferer")) > 0 then
arrRefer1 = split(Request.ServerVariables("HTTP_REFERER"),"//")
if UBound(arrRefer1) > 0 then
arrRefer2 = split(arrRefer1(1), "/")
if UBound(arrRefer2) > 0 then
origReferer = arrRefer2(0)
end if
end if
Response.Cookies("OrigReferer") = origReferer
Response.Cookies("OrigReferer").Expires = DateAdd("d", 120, Date())
else
oReferer = Request.Cookies("OrigReferer")
end if
else
oReferer = "no cookies"
end if
else
oReferer = "self"
end if
<script>
这段代码大部分时间都可以正常工作。当我尝试在更新版本的表单中使用此代码时,我遇到了两个问题。首先,输入本身根本没有设置。我不知道为什么因为代码确实有一个默认值,所以它至少应该总是“自我”。第二个问题是,不是我编写的原始代码使用 来设置值。当我现在这样做时,我得到一个 VBScript 错误,“类型不匹配”。
就像我说的我是一个 .Net 人,在 .Net 中解决这个问题不是问题。我也不知道 Classic ASP,我很困惑。我很想改用.Net,但现在不能使用这种特殊的形式,所以任何帮助解决这个问题都会很棒。
【问题讨论】:
-
它应该告诉你错误发生在哪一行,你能在代码中突出显示吗?
-
<% oReferer %>可能需要为<%=oReferer %>(即带等号) -
是的,你肯定需要
=符号。尝试在oReferer = Request.Cookies("OrigReferer") & "**"行值上附加一些东西,看看你是否正在执行这一行。如果 OrigReferer cookie 为空白,oReferer也将为空白(空),并且不会在<% =oReferer %>行中写入任何值。 -
现在代码确实使用 = 符号来设置值。这修复了错误,但给了我空值。当我不使用 = 时出错的行是我在原始帖子中的输入本身的行。创建和设置 oReferer 的代码似乎不是问题,但在将其设置为值时有些不匹配。几乎就像 oReferer 不被视为一个字符串。最后,执行 Request.Cookies("OrigReferer") & "**" 的想法仍然会给我输入一个空值。这个问题对我来说真的很奇怪。
标签: data-binding forms binding asp-classic