public int UserID
{
   get 
   {
       int uid = -1;
       string s = ViewState["UserID"] as String;
       bool bRes = Int32.TryParse(s, out uid);
       if (bRes)
       {
          return uid;
       }
       else
       {
          ...
       }  
   }
   set { ViewState["UserID"] = value }
}

解决方案 »

  1.   

    楼上的正解,当你点击a.aspx页面按钮的时候,页面刷新,b.ascx 中的变量就被清空了,所以要用
    ViewState保存,或者使用隐藏控件保存也是可以的
      

  2.   

    sorry,小弟没有表达清楚,再说一下意思:
    a.aspx按钮事件是某值传给b.ascx的ID,比如说:
    页面初始,在a.aspx的PageLoad事件中,给b.ascx的UserID赋值“1”,正常;
    然后,点击a.aspx中的按钮,将“2”赋值给b.ascx的UserID,b.ascx无法正常接受到值“2”这个问题咋整?
      

  3.   

    另外,小弟觉得可能与页面的生存周期有关系,是不是web控件在所属页面首次加载时才接受传过去的属性值,在所属页回传时就不再接受这些值呢?
      

  4.   

    小弟觉得可能与页面的生存周期有关系,是不是web控件在所属页面首次加载时才接受传过去的属性值,在所属页回传时就不再接受这些值呢?
    ==>
    不是。可以在相应的事件处理函数中设置。楼主把代码贴出来,大家帮你分析分析!
      

  5.   

    流程:
    a.aspx的PageLoad事件:
    b.UserID = 465;
    a.aspx页面的按钮单击事件
    b.UserID = 123;
    b.ascx的PageLoad事件是
    Response.Write(this.mUserID);在a.aspx首次加载时,页面可以显示456;
    单击a中的按钮,页面却不显示123,这是为啥?
      

  6.   

    流程大概是这样的:
    在a.aspx中(Page_Load)给变量赋值,加入是:aaa,然后再b.ascx中(Page_Load)显示这个值,这样就是aaa,当点击a.aspx上的按钮时,首先执行b.ascx的(Page_Load)事件,这时的这个值由于还保持上次的aaa,所以显示的还是aaa,但是点击了按钮赋的值还是会给变量,这时的变量的值就会变成你刚才点击按钮时的值了,比如说bbb,而显示的事aaa,也就是说,每次你点击按钮显示的都是上一次付的值。
      

  7.   

    TO zzh198310 月影无痕 :用IsPostBack也不行......
    TO zhuanshen712 :点击无数次按钮,都是显示aaa啊,这可咋解决啊
      

  8.   

    流程大概是这样的: 
    在a.aspx中(Page_Load)给变量赋值,加入是:aaa,然后再b.ascx中(Page_Load)显示这个值,这样就是aaa,当点击a.aspx上的按钮时,首先执行b.ascx的(Page_Load)事件,这时的这个值由于还保持上次的aaa,所以显示的还是aaa,但是点击了按钮赋的值还是会给变量,这时的变量的值就会变成你刚才点击按钮时的值了,比如说bbb,而显示的事aaa,也就是说,每次你点击按钮显示的都是上一次付的值。 
    这个说的是对的