我在用户控件里定义一个AAA:  public string AAA;
在调用用户控件的页面B里对AAA赋值
在加载B页面时,确实是将AAA的值传给了用户控件
到这里,这个传值操作是成功的
但是现在的问题是,在页面加载成功后,我再去操作这个用户控件,这个AAA的值就为NULL了
所以我想知道怎么传一个可以永久保留的值给用户控件

解决方案 »

  1.   

    ViewState[AAA]=xx
    你不用视图 服务器 是不是给你保存的撒,很明显
      

  2.   

    跟接口定义或者这个值本身没有什么关系。你的用户控件应该用ViewState保存值。类似于:   public string AAA
       {
          get{ 
                object x=ViewState["aaa"]; 
                return x==null?string.Empty:(string)x;
             }
          set{
                ViewState["aaa"]=value;
             }
       }你可以在页面上设置一个Button,然后调试程序时时不时地按一下这个button让页面回发,如果你发现一些自己写的界面上的东西无法保存状态,就要从头反思直接是否理解asp.net应用程序设计技术。毕竟,asp.net不是asp,你要非常注意ViewState的作用,在每一个地方都注意状态维持是否准确。如果不注意这个,会有很多地方已经写错了,还不知道,一旦用到复杂的(多处引起交互的)页面上就会漏洞百出了。
      

  3.   

    public string AAA; 这个定义虽然自然,但是可以肯定是不能维系状态的。设计程序首先要设计好接口协议(不是指interface,而是指方法的input/output定义)。这个接口设计为 public string AAA{get;set;} 会比较自然跟field一样使用方便,而且可以在方法内部实现状态维系。所以,asp.net控件的对外参数应该总是设计为property,而不是设计为field。