假如一个页面需要从文本框或者url来获取数据,然后用该数据作为参数去读数据库,也就是说,不管IsPostBack是什么状态,都需要重新获取数据源。
那么,当我没有获取外部数据的情况下,如何保存住上一次获取的数据呢?在Page_load中if (IsPostBack == true)
{
   if (!String.IsNullOrEmpty(TextBox1.Text))
   {
      ViewState["Data"] = TextBox1.Text;
      GetDataSource(ViewState["Data"].ToString());//用ViewState保存,并作为参数去获取数据
    }
}如果,用户没有输入,TextBox1.Text就是""了,那么我如何保存住这个ViewState呢?(以上写法是错的)

解决方案 »

  1.   

    ViewState["Data"] = TextBox1.Text; 保存先判断下 TextBox1.Text 是不是空么  GetDataSource(ViewState["Data"].ToString()) 
    获取先判断 ViewState["Data"] 是不是空 难道不行?
      

  2.   

    不行因为如果ViewState为空,那么就读不到数据了,但是我想保存上一次的ViewState(或者其他形式的保存方式),来永远都可以读得到数据,因为页面上要一直显示出东西,不可能变成空白的页面。
      

  3.   

    那就用session吧这个值保存起来好了 如果 TextBox1 不为空那就更新这个ViewState 
      

  4.   

    搞定了!不过又引出了另一个问题。
    if (Text1.Text != Stirng.Empty)
    {
       ViewState["Data"] = Text1.Text;
    }if (ViewState["Data"] != null)
    {
       GetDataSource(ViewStat["Data"].ToString());
    }这里的困惑就是GetDataSource方法放在什么位置的问题,如果放在if (Text1.Text != String.Empty)里面,就可能得不到数据源了。所以就放在外面了。