来自ASP经典的结果不一致

use*_*414 0 constants mismatch asp-classic query-string

使用常量值时,我有一个令人不安的问题.我有一个名为"test.asp"的简单页面,它将变量设置为常量,然后设置为查询字符串值(如果存在).然后一个选择案例检查变量是否与常量匹配并输出"匹配"消息.问题是asp无法识别查询字符串值何时与常量相同.我已经运行了2次尝试,"test.asp"和"test.asp?SortField = 1".第一次尝试按预期运行,但第二次尝试报告1与1不同.此页面的代码如下所示.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<head></head>
<body>

<%
const cSortFielda = 1
dim vSortField

vSortField = cSortFielda
if not isempty(Request("SortField")) then
    vSortField = Request("SortField")
    end if

select case vSortField
    case cSortFielda
        response.write "matched</br>"

    case else
        response.write "failed</br>"
        response.write "vSortField = " & vSortField & "(" & asc(vSortField) & ") </br>"
        response.write "cSortFielda = " & cSortFielda & "(" & asc(cSortFielda) & ") </br>"
        response.write "vSortField = cSortFielda is " & (vSortField = cSortFielda) & "</br>"

        end select
%>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西或者是错误的经典之作吗?

谢谢你的帮助.

Kir*_*oll 6

您正在将字符串与数字进行比较.你需要确保它们是一致的.所以要么改变这一行:

const cSortFielda = 1
Run Code Online (Sandbox Code Playgroud)

至:

const cSortFielda = "1"
Run Code Online (Sandbox Code Playgroud)

或者改变这一行:

vSortField = Request("SortField")
Run Code Online (Sandbox Code Playgroud)

至:

vSortField = CLng(Request("SortField"))
Run Code Online (Sandbox Code Playgroud)

第一个示例将字符串与字符串进行比较,第二个示例将数字与数字进行比较.