为什么用静态函数获取Request.QueryString或者session的一些值的时候要写全称的?
但是这样取数据的话,还是会提示HttpContext.Current.Request.QueryString["itemid"]为null的,什么原因呢?
HttpContext.Current.Session["userid"].ToString(),session里面的值是可以取得的
这样的话,我要获取Request.QueryString["itemid"]的值只能先声明静态字符串,然后在pageload里面取出来嘛?
有很多不懂的地方,迷惑~

解决方案 »

  1.   

    先判断一下是否为NULL,原因可能是用于你是否触发了POSTBACK导致的
     if(Request.QueryString["itemid"]!=null)
       {
        //取值
       }
      

  2.   


     public static bool SumbmitConsult(string consultcontent)
            {
             int userid = Int32.Parse(HttpContext.Current.Session["userid"].ToString());
             string itemid = HttpContext.Current.Request.QueryString["itemid"].ToString();
             }第一个是可以取到的,第二个是空的 url上有?itemid=1232423143这样的,就是获取不到~
      

  3.   


    应该没有,或者你这个itemid拼错了,要不你添加个监视看看
      

  4.   

    嘿嘿,我也以为我拼错了呢,没拼错,眼睛死死盯着看呢在page_load事件中可以直接获取到这个值。是不是static在作怪啊??
      

  5.   

    string itemid= HttpContext.Current.Request.QueryString["itemid"].ToString(); 
    非静态的字段、方法或属性“System.Web.UI.Page.Request.get”要求对象引用这里报错
      

  6.   

    请问你的静态函数是什么地方被call到的.写在代码的什么位置
      

  7.   


    //写到Page_Load里面;
    private void Page_Load(object sender, System.EventArgs e){
    string itemid = HttpContext.Current.Request.QueryString["itemid"].ToString();
    }
      

  8.   

     function submitCommentMehod(){
      PageMethods.SumbmitConsult($val('commentArea'),function(a){
       if(a){
       alert("留言成功");
       }else{
       alert("留言失败,请重试");
       }
       }
       );
       }
      

  9.   

    楼主,我觉得这个问题有点复杂,从PageMethods的工作原理上来看,本身和向一个web aspx做post区别不大,唯一我现在有疑问的是,是否会将当前url作为post的地址,我想楼主能否实验一下在服务器那边读取一下你页面的url, 这样HttpContext.Current.Request.Url.ToString(),看看得到什么,如果是带参数的url,那就要再研究下,如果不带,那就是问题所在.
      

  10.   

    果然没带~呵呵,url是xxxxxx/item.aspx/SumbmitConsult
    本来是item.aspx?itemid=xxxxx
      

  11.   

    应该跟你的ajax框架的底层原理有关系,不过这个我还没有研究过,反正现在问题就在于,提交的时候没有带query string,那么你可以用变通的解决办法,定义一个hidden在页面里面,或者是ViewState,在页面刚载入的时候就将query string存储起来,那么,ajax提交的时候你通过viewstate去取,就可以了.
      

  12.   

    在WebMethod()方法中,是不能通过 HttpContext.Current.QueryString.Get("id")来获取query string,
    因为在WebMethod()默认是用POST方法提交的,而用GetQueryString是不能取到值的。我是这样解决的!楼主是如何解决的呢?