加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

asp.net中 页面全局静态变量 问题

发布时间:2022-10-19 15:55:02 所属栏目:Asp教程 来源:
导读:  目的:更改信息页面(不妨用更改用户为例,userUpdate.aspx。)

  做法:dbo.tbl_Users表中读出来的行发送到User对象的变量protected static User user; ,根据user变量填写页面表单。用户更改信息后,更改
  目的:更改信息页面(不妨用更改用户为例,userUpdate.aspx。)
 
  做法:dbo.tbl_Users表中读出来的行发送到User对象的变量protected static User user; ,根据user变量填写页面表单。用户更改信息后,更改的表单反馈到user变量中并将之传到数据层更新数据库。
 
  发现问题:用静态全局变量存放之后,对于初始化表单前,断点中的user一切正常;但是在用户提交后ASP 变量,对于前面读取过的user中的属性(比如username:string这样的属性),还存在,但是对于user中一些没有读取的属性(比如userDesc:string),读断点的时候发现他们已经被置空了(null)。
 
  问题:按我的理解,页面类的全局静态变量的生命周期应该是和页面一致的,为什么对象变量如user中会丢失信息?是我理解偏差还是做法有失偏颇?
 
  PS:为了交任务,我用了Cache,把user放入Cache中了(和ViewStates对比了下,我选择了Cache,不知道这样好不好?),但是问题是,我不知道该什么时候销毁(Remove)Cache中的变量,我找不到一个页面在他的最后的那段时间里应该做的“事件”~~(惭愧)
 
  问题:这里用Cache可不可以,我应该怎么用才最妥当。
 
  代码:前台就不贴了
 
  静态变量的 user换成产品 product
 
 
 
  private static Product p;
 
 
 
  protected void Page_Load(object sender, EventArgs e)
 
      {
 
          //if (Session["XXX"] == null || Session["XXX"] == "")
 
          //{
 
          //    Response.Redirect("XXX");
 
          //}
 
          if (!IsPostBack)
 
 
 
          {
 
              this.ImageUpload.Attributes.Add("onchange", "javascript:PreviewImg(this.value)");
 
              if (Request.QueryString["pid"] == null || Request.QueryString["pid"] == "")
 
              {
 
 
                  InitPage();
 
              }
 
              else
 
              {
 
                  InitPage(Request.QueryString["pid"]);
 
              }
 
          }
 
      }
 
  //初始化表单 此处p中的属性都正常
 
  protected void InitPage(string pid)
 
      {
 
          lblComName.Text = ConfigurationManager.AppSettings["CompanyName"] + "----产品更新";        
 
          ddlistInit();
 
          p=ProductBLL.GetProduct(Convert.ToInt32(pid));
 
          txtName.Text=p.ProductName;
 
          imgPre.ImageUrl=p.IntroImage;
 
          ddlCate.SelectedIndex = p.CategoryID - 1;
 
          intro.InnerHtml = p.Introduction;
 
          btnSubmit.Visible = true;
 
          btnSubmit0.Visible = false;
 
      }
 
  ///
 
 
      /// pack the parameters as one object  比如这儿的p.LastUpdate就变成了0001.01.01,00:00:00
 
  asp include 变量_js 获取asp变量_ASP 变量
 
 
      ///
   
 
      protected void sealProduct()
 
      {
 
          p.CategoryID = ddlCate.SelectedIndex + 1;
 
          p.CompanyID = Convert.ToInt32(ConfigurationManager.AppSettings["CompanyID"]);
 
          p.Introduction = intro.InnerHtml;
 
          p.LastUpdate = DateTime.Now;
 
         p.ProductName = txtName.Text;
 
          p.UpdateBy = Convert.ToInt32(Session["xxx"]);
 
      }
 
   ///
 
 
      /// Update
 
      ///
 
 
      ///
 
      ///
 
      protected void btnSubmit_Click(object sender, EventArgs e)
 
      {        
 
          sealProduct();
 
          ProductBLL.UpdateProduct(p);
 
          Response.Write("");
 
      }
 
 
 
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!