http://www.venetian.com/Checking-Rates/&OFFERCODE=abc123&ARRIVALDATE=06-08-2012&DEPARTUREDATE=09-08-2012&#OFGUESTS=2这是别人提供给我的一个url,我需要获取参数,Checking-Rates是伪静态页面,现在的问题是#OFGUESTS,假如对方没有处理#符号就直接传过来,那么应该怎么获取这个参数值呢?

解决方案 »

  1.   


    /// <summary>
    /// 测试.
    /// </summary>
    public void Test()
    {
        string pageURL = "http://www.google.com.hk/search?hl=zh-CN&source=hp&q=%E5%8D%9A%E6%B1%87%E6%95%B0%E7%A0%81&aq=f&aqi=g2&aql=&oq=&gs_rfai=";
        Uri uri = new Uri(pageURL);
        string queryString = uri.Query;
        NameValueCollection col = GetQueryString(queryString);
        string q= col["q"];
        //结果 q= "博汇数码"
        string aql= col["aql"];
        //结果 ""
    }    /// <summary>
    /// 将查询字符串解析转换为名值集合.
    /// </summary>
    /// <param name="queryString"></param>
    /// <returns></returns>
    public static NameValueCollection GetQueryString(string queryString)
    {
        return GetQueryString(queryString, null, true);
    }/// <summary>
    /// 将查询字符串解析转换为名值集合.
    /// </summary>
    /// <param name="queryString"></param>
    /// <param name="encoding"></param>
    /// <param name="isEncoded"></param>
    /// <returns></returns>
    public static NameValueCollection GetQueryString(string queryString, Encoding encoding, bool isEncoded)
    {
        queryString = queryString.Replace("?", "");
        NameValueCollection result = new NameValueCollection(StringComparer.OrdinalIgnoreCase);
        if (!string.IsNullOrEmpty(queryString))
        {
            int count = queryString.Length;
            for (int i = 0; i < count; i++)
            {
                int startIndex = i;
                int index = -1;
                while (i < count)
                {
                    char item = queryString[i];
                    if (item == '=')
                    {
                        if (index < 0)
                        {
                            index = i;
                        }
                    }
                    else if (item == '&')
                    {
                        break;
                    }
                    i++;
                }
                string key = null;
                string value = null;
                if (index >= 0)
                {
                    key = queryString.Substring(startIndex, index - startIndex);
                    value = queryString.Substring(index + 1, (i - index) - 1);
                }
                else
                {
                    key = queryString.Substring(startIndex, i - startIndex);
                }
                if (isEncoded)
                {
                    result[MyUrlDeCode(key, encoding)] = MyUrlDeCode(value, encoding);                    
                }
                else
                {
                    result[key] = value;
                }
                if ((i == (count - 1)) && (queryString[i] == '&'))
                {
                    result[key] = string.Empty;
                }
            }
        }
        return result;
    }/// <summary>
    /// 解码URL.
    /// </summary>
    /// <param name="encoding">null为自动选择编码</param>
    /// <param name="str"></param>
    /// <returns></returns>
    public static string MyUrlDeCode(string str, Encoding encoding)
    {
        if (encoding == null)
        {
            Encoding utf8 = Encoding.UTF8;
            //首先用utf-8进行解码                     
            string code = HttpUtility.UrlDecode(str.ToUpper(), utf8);
            //将已经解码的字符再次进行编码.
            string encode = HttpUtility.UrlEncode(code, utf8).ToUpper();
            if (str == encode)
                encoding = Encoding.UTF8;
            else
                encoding = Encoding.GetEncoding("gb2312");
        }
        return HttpUtility.UrlDecode(str, encoding);
    }
      

  2.   


            string offerCode = Request.Params["OFFERCODE"];
            string arrivalDate = Request.Params["ARRIVALDATE"];
            string leaveDate = Request.Params["DEPARTUREDATE"];
            string guests = Request.Params["OFGUESTS"];gusets的值为null
      

  3.   

    后台获取提交过来的url?是通过表单提交的吗?那还是一个字符串格式啊
      

  4.   


    或者 你每次都获取URL地址 然后查找"#"字符  截取后面的 
    然后在截取一次 根据第一个等号截取