如题
我通过<%=aaa%>绑定公共变量public string aaa;后点击用户控件上的按钮,刷新页面后,通过其绑定的数据丢失了但是如通过<%#DataBinder.Eval(Container.DataItem,"dddd")%>方法绑定的数据却没有丢失请问为什么会这样,如何解决,谢谢

解决方案 »

  1.   

    回发后后台对aaa没有重新设值,而你的绑定数据源是重新获取或存在viewstate中的.
      

  2.   

    如果继续用<%=aaa% >绑定数据可不可以实现像<%#DataBinder.Eval(Container.DataItem,"dddd")% >的效果
    谢谢
      

  3.   

    当用户发出一个访问请求后,服务器会响应该请求,同时缓存该页面
    为什么缓存页面不会保留public string aaa的值,而会保留<%#DataBinder.Eval(Container.DataItem,"dddd")%  >的绑定值
      

  4.   

    页面上的控件都会维持视图状态(ViewState),由于<%#DataBinder.Eval(Container.DataItem,"dddd")%  >获得的是DataSource或者DataSet中的数据,而这2个数据源都缓存在服务器内存中的,所以可以在回传后保持状态。
    而public string aaa是类CS文件中的变量,不保存其状态。
    解决方案:
    public string aaa
    {
        get{return ViewState["aaa"])};
        set{ViewState["_aaa"]=value)};
    }
      

  5.   

    楼主主要明白为什么就行了?<%=aa%>相当于response.write(aa)
      

  6.   

    楼上兄弟正解啊。如果你把aaa定义全局或静态变量呢。可能也会得到相应的效果吧。
      

  7.   

    不对,不是全局变量与局部变量的问题,回发后后台对aaa没有重新设值,而你的绑定数据源是重新获取或存在viewstate中的.