asp.net中 页面全局静态变量 问题
发布时间:2022-10-19 15:55:02 所属栏目:Asp教程 来源:
导读: 目的:更改信息页面(不妨用更改用户为例,userUpdate.aspx。)
做法:dbo.tbl_Users表中读出来的行发送到User对象的变量protected static User user; ,根据user变量填写页面表单。用户更改信息后,更改
做法: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(""); } (编辑:航空爱好网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐