dim result as string=cstr(viewstate("key"))

解决方案 »

  1.   

    这样只能取到  UserControl 的 viewstate 阿,拿不到page的viewstate
      

  2.   

    用参数传递.将ViewState里的信息传递给UserControl.
      

  3.   

    UserControl 有一个 Page 属性,可以引用控件所在的 Page 类
      

  4.   

    如果 Page.ViewState["name"];可以,我就不会提问了
      

  5.   

    Page 没有 viewstate 属性的
      

  6.   

    给UserControl设置一个属性UserControl.your属性 = ViewState["name"].ToString();当然执行这句话得先判断ViewState["name"]!=null
      

  7.   

    这个问题也苦了我很久,就是找不到。不知道为什么
    现在的原因是,userControl.Page没有VeiwState属性。
    page没有viewstate属性,而继承于page的类有viewstate属性。
    你说怪不怪?????
      

  8.   

    所以呢,想在自定义控件中操作veiwstate就不可能了,只能到web页中去写了,不能在自定义控件中写函数直接操作了。
    希望大侠出现
      

  9.   

    查了一下MSDN,ViewState 在 Page 类中为 protected, 我们可以在 Page 类中写个 public 方法公开 ViewState, 在用户控件所在的页面加上下面的方法:public StateBag ViewState1
    {
      get
      {
         return ViewState;
      }
    }然后在用户控件中 Page.ViewState1["name"];
      

  10.   

    楼上兄台的方法,仍然不能在控件本身内操作viewstate
      

  11.   

    可以实现。根据aspx的onload事件优先于ascx的onload事件原则,在aspx的邦定文件中的onload事件中,加入context.Items["viewstate"] = viewstate;这样,在用户控件ascx的邦定文件中就可以读取出来。
      

  12.   

    整理一下?
    问题2:如何让page页面读出userControl里的viewState?
      

  13.   

    exboy(百分之七十八)兄的方法应该可以,比较好的做法继承page类,公布viewState属性,然后后面的页面都继承于该类,这样就可以调用了,但是ms为什么要保护这个ViewState,其原因还要研究清楚,如果有其特殊的原因,就要全盘考虑一下了。
        5027527(Cool_FX) 的方法应该是属于向用户控件传递的方法,和论题有所偏差,论题的目的就是不用传递,如何调用viewstate
      

  14.   

    Page  mypage  =  (Page)System.Web.HttpContext.Current.Handler;  
    string  s  =  (string)  mypage.ViewState["Whatever"];  
      

  15.   

    you are breaking the encapsulation, if you need to read something from your Page container, you should expose a specific property in your Page class and shouldn't depend on whether the value is saved in ViewState or not, for example,public string MyID
    {
      get {...}
      set {...}
    }if you insist, you can always use Reflection to access protected or private properties
      

  16.   

    aierong 兄,上面已经说过 ViewState 是 protected的saucer 兄 
        通过属性的方法是比较正规的解决方法,但是有时候一个用户控件需要在很多页面中使用,如果每个页面都写几句调用得代码相当麻烦,而且如果后面客户提出修改导致需要一个个文件去修改更是头疼得事情。
        我的想法是在用户控件自己去读取page的viewState中的信息,从而做出相对应的修改,从使用方便性来说是不是大大提高了。
        不过可能是我学习.net的时间不长,编写过程中经常会带入其他语言的编程思想,而没有使用上.net的正确解决方案。
       用 Reflection 来提取类的信息可能是目前能想到的方法了,但是好像有点旁门左道,也有点违背OO思想,呵呵,我考虑一下再决定是否使用,不过还是要谢谢你提供的这个方法。
       我在查找和ViewState相关贴子的时候,发现很多问题都是你解决的,对.net有比较深层次的理解,请以后多多指教。