经典ASP绑定输入到变量

时间:2010-11-24 15:41:27

标签: data-binding forms binding asp-classic

我更像是一个.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>

此代码在大多数情况下都可以正常运行。当我尝试在更新版本的表单中使用此代码时,我遇到了两个问题。首先,输入本身根本没有设置。我不确定为什么因为代码确实有默认值所以它应该始终至少是“自我”。第二个问题是原始代码,不是由我编写的,使用&lt;%oReferer%&gt;设置值。当我这样做时,我得到一个VBScript错误,“类型不匹配”。

就像我说我是一个.Net的人,在.Net中解决这个问题不是问题。我也不知道经典ASP,我很难过。我很乐意改为.Net但现在不能用于这种特殊的形式,所以任何有助于解决这个问题的帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

<%
    dim oReferer
    dim origReferer, arrRefer1, arrRefer2
    origReferer = "self"

    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())

                ''// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                ''// The problems is that you are not 
                ''// setting the oReferer variable here
                ''// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

            else
                oReferer = Request.Cookies("OrigReferer")
            end if 
        else
            oReferer = "no cookies"
        end if
    else
        oReferer = "self"
    end if

    response.write "----------<br>"
    response.write "oReferer=" + oReferer
 %>