我用Request.QueryString方法从a页面中传递了一个username参数(文本变量)到b页面,传递中是没有问题的,b页面获得了a的username值,但在操作b页面的一个控件时发生了postback,导致页面刷新,结果这个username就为null了,那个变量值丢了,怎么办?

解决方案 »

  1.   

    那你第一次获取到之后把它保存在ViewState里,下次直接从ViewState里取。
      

  2.   

    仍从 Request.QueryString["username"]内取不到么?
      

  3.   

    因为页面使用了框架,a页面只需要发送一次username给b页面,任务就完成了,其余操作都在b页面内。也试过重复一次Request.QueryString["username"],已经取不到值了,会出错。
      

  4.   

    楼主试一下 urlreferrer 属性,如果不为null,看能不能取到
      

  5.   

    用if(!IsPostBack){}//第一次加载时取值就可以了,以后页面刷新都不会重新取值
      

  6.   

    我目前取值代码就放在if(!IsPostBack){}块里。因为a页面控制着名字的选取,所以传递的username变量会发生变化,而b页面根据这个变化的username从数据库获取相应的数据。
      

  7.   

    那楼主 数据是几个小字段 就用Session把比较大就用ViewState。。不然根据原理 你用Request.QueryString是取到值的
      

  8.   

    仔细看了下代码流程,在点击了a页面的按钮后,启动了传递代码,username被传递到了b页面,b页面获取到了a页面的username值并加载,等操作了b页面的按钮后,页面刷新了,username重新获取了a页面的值,但这个时候a页面没有执行按钮的click命令,所以这个时候的useranme是null,所以b页面的username成了null值。这怎么回事
      

  9.   

    还是不行,我用hiddenfield控件或者是一个字符串变量用来存储这个值,如下:
    username = Request.QueryString["username"].ToString();
    if (username!=null){
    hiddenfield.value=username;
    }
    可是页面刷新的时候,hiddenfield的value又成了null。我怕是控件的问题,又把hiddenfield改成一个字符串变量,结果还是一样。我用session,结果也是一样,成了null。
      

  10.   

    if(!IsPostBack)
    {
      if(Request.QueryString["username"]!=null)
      {
        ViewState["username"]=Request.QueryString["username"].ToString();
      }
    }
    //取值
    string username = ViewState["username"].ToString();
    只要你当前页面不关闭 再怎么刷新也能去得到值
      

  11.   

    我贴一下我的代码,看看究竟是哪里有问题,控件都在一个updatepanel中,换了session,viewstate都不行
    public string username;        
    protected void Page_Load(object sender, EventArgs e)
                if (!IsPostBack)
                {
                    if (Request.ServerVariables["REQUEST_METHOD"].ToString().ToUpper() == "GET")
                    {
                        Response.Write("<Script>");
                        Response.Write("alert(" + Request.ServerVariables["REQUEST_METHOD"].ToString() + ")");
                        Response.Write("</Script>");
                        if (Request.QueryString["username"] == null)
                        {
                            username = null;
                        }
                        else
                        {
                            username = Request.QueryString["username"].ToString();
                        }
                    }
                    else
                    {
                        //注意必须写成querystring的形式
                        if (Request.QueryString["username"] == null)
                        {
                            username = null;
                        }
                        else
                        {
                            username = Request.QueryString["username"].ToString();
                            ViewState["username"] = Request.QueryString["username"].ToString();                    }
                    }
                    if (username != null)
                    {
                        Label1.Text = "欢迎您," + username + "!";
                    }
                }
            }
                }
                
            }
      

  12.   

    上一楼的ViewState["username"] = Request.QueryString["username"].ToString();
    可以不要,忘了删了
      

  13.   

    用了好多各位高人的办法,也用了变量存储,在页面中点击button,也没看见刷新啊,但出发的page_load事件里,username就成null了
      

  14.   

    去掉UpdatePanel测试一下,估计是因为Ajax的原因
      

  15.   

    updatepanel也去掉了,还是无效
      

  16.   

    你写那一大堆代码干嘛,其实很简单的几行不就行了
    protected void Page_Load(object sender, EventArgs e)
    {
      string username=Request.QueryString["username"];
      if (!string.IsNullOrEmpty(username))
      {
         Label1.Text = "欢迎您," + username + "!";
      }
    }
      

  17.   

    唉,不知道怎么搞的,现在又把我上午注销掉的session给恢复,再运行,竟然有结果了,username竟然有值了,真是晕乎乎啊。贴个代码:
    a页面:Session["username"] = username;
    b页面:                if (Session["username"] != null)
                    {
                        username = Session["username"].ToString();
                    }
    发现不管怎么点击b页面的按钮,这一段代码都会执行,并取得值,哇哈哈,怎么上午他就运行不正常呢?奇怪。感谢大家
      

  18.   

    建议不要用Session,占用服务器内存,用我22楼贴的代码很简单