如何测试 QueryString

3

我有一个查询字符串叫做propID,我想检查传递给它的值是否是合法的整数,以避免抛出可能会泄露我的数据库信息的错误,我该怎么做?

换句话说,我想要类似于以下代码(但是在vb.net中实现):

IF QueryString("propID").Content.Type = "int32" Then Proceed
5个回答

9

您可以使用TryParse方法:

Dim myInt As Integer
If Int32.TryParse(QueryString("propID").Content, myInt) Then Proceed

尝试解析空字符串时,parse函数是否能正确工作(例如失败),还是会返回0? - stevehipwell
空字符串不会被评估为0。 - TheTXI
今天我刚刚发现,尽管TryParse对于空字符串会返回false,但它也会将myInt设置为0。当你想使用-1作为默认值时,这非常令人恼火。 - David
如果 TryParse 函数返回 false,则它会将 myInt 设置为 0。 - M. Jahedbozorgan

5
Dim result as boolean
result = integer.tryparse(QueryString("propID"), myintegervariable)

如果成功解析(将值放入myintegervariable),则boolean将返回true,如果解析失败,则返回false。

您也可以这样写:

if integer.tryparse(QueryString("propID"), myintegervariable) then
    //continue going along with myintegervariable
else
   //parsing didn't work
end if

正如其他答案中所说,您可以像使用任何其他数据类型一样使用Int32.tryparse。我更喜欢使用整数是因为习惯问题。 - TheTXI

1
你可以尝试使用'is'关键字来检查对象的类型。
If QueryString("propID").Content.Type Is Int32 Then Proceed

否则 Int32.TryParse 也可以工作。

1

C# 版本:

int _PropID;
if (int.TryParse(QueryString["propID"], out _PropID))
{
    //Proceed with _PropID
}

1
你可以直接使用 Int32.TryParse。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接