3

是否有可以在我当前的 ASP.NET 应用程序中使用的库来验证 queryStrings?

编辑〜使用正则表达式查找模式,如字符串,仅,仅数字,长度为 x 的字符串,...等

谢谢

4

4 回答 4

5

不了解库,但您可以使用它来检查查询字符串是否存在:

if (!String.IsNullOrEmpty(Request.Querystring["foo"]))
{
   // check further
}
else
{
   // not there, do something else
}

如果要使用正则表达式进一步验证,可以创建一个接受字符串并返回布尔值的类。

public static Boolean IsValid(String s)
{
    const String sRegEx = @"regex here";

    Regex oRegEx = new Regex(sRegEx , RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled);
    MatchCollection oMatches = oRegEx.Matches(s);

    return (oMatches.Count > 0) ? true : false;
}

这是一个很好的免费程序,可以帮助您构建正则表达式:Expresso

于 2008-10-30T19:24:35.543 回答
2

这种事情的最佳方法可能是使用正则表达式来检查您正在寻找的任何条件。

在实际场景中将验证与演示分开会很好,但这只是为了举例:

  if (!string.IsNullOrEmpty(Request.QueryString["Variable"]))
    {
        string s = Request.QueryString["Variable"];

        Regex regularExpression = new Regex("Put your regex here");

        if (regularExpression.IsMatch(s))
        {
            // Do what you want.
        }
    }
于 2008-10-30T20:11:13.530 回答
1

您的意思是要询问将查询字符串分成几个部分吗?ASP.Net 已经为您做到了。您可以通过 Request.QueryString 集合访问各个参数。

对于查询字符串:?fruit=apple&socks=white

Request.QueryString["fruit"] 会给你“apple”,Request.QueryString["socks"] 会给你“white”。

于 2008-10-30T19:29:07.607 回答
0

如果您谈论的是在请求进入时验证查询字符串,.NET Framework 已经这样做了。Page 有一个名为 ValidateRequest 的属性,默认情况下为 true,查询字符串中的任何无效都会导致错误(在您的代码中第一次访问查询字符串时),而您无需执行任何操作。

如果您正在谈论验证作为数据或其他内容的查询字符串,那么这篇 MSDN Mag 文章可能会对您有所帮助。

编辑:我看到您在询问有关数据验证的更多信息。您应该在我上面链接的 MSDN 文章中找到一些好东西。

于 2008-10-30T19:38:29.197 回答