/login.aspx?login&username=test&password=123如何利用QueryString对象判断是否包含login这个key呢
如果直接取得话
QueryString["login"]=null
和URL没有带login的效果是一样的

解决方案 »

  1.   

    你写的那个判断是否为null就可以做到,由于QueryString肯定是字符串,如果Url里带有login却没有给出值,那QueryString["login"]=="";
      

  2.   

    不知道楼上测试了没有,我测试得到的结果是Null,
      

  3.   


    if(Array.IndexOf(Request.QueryString.AllKeys,"login")>-1)
    {
        // to do...
    }
      

  4.   

    Request.QueryString.Count
    看到底有几个参数
      

  5.   

    这个方法不严谨
    网上曾经找到这样的方法
    NameValueCollection nvc = new NameValueCollection(Request.QueryString);
    nvc.remove("login");
    然后比较 nvc.count 和 QueryString.count
    但这样似乎比较繁琐,我认为也影响效率
      

  6.   

    if(Request.Url.ToString().IndexOf("login")>1)
    {
    //todo
    }
    else
    {
    //todo
    }
      

  7.   

    /login.aspx?login&username=test&password=123
    你没发现你这个参数&有问题?
    这样怎么能够很好的取到?后面的值
      

  8.   

    参数为空,可是键名没办法获取,给个东西不成吗?
    login.aspx?login=true&username=test&password=123 
      

  9.   


    获取URL以后 截字符串不就得了...
      

  10.   


                if (Request.Params["Login"] != null)
                { 
                    //
                }
                else
                { 
                    //
                }
      

  11.   

        传参的格式不正确吧。一般都是 login.aspx?a=ddd&b=ddd  你的login后面什么都没有,直接跟了一个&号,当然会是null值了。你这个地址的有效参数,只有两个,一个是用户名,一个是密码。如果你在login后面加一个=号,估计就不会是null了,而且是空字符串了。
      

  12.   

    楼主,你看这个行不?
    String[] array = Request.QueryString.AllKeys;
            if (array.Contains("login"))
            {
                // to do 
            }
      

  13.   

    看来在这里继续问下去也是无解暂时自己用new Regex(@"(\?|\&)login($|\&|\=)").IsMatch(context.Request.RawUrl);
      

  14.   

    context.Request.RawUrl.ToLower().contain("login");
    那这样也行吧,
      

  15.   

     只能取到UrlParameter然后正则匹配了,不过大小写忽略而已
      

  16.   


    如果有 login.aspx?logintype=1
    是不是就出问题了?