首页 新闻 搜索 专区 学院

.net postback前的变量值保存

0
[已解决问题] 解决于 2012-01-13 15:01

比如产品的实体信息吧 我现在是定义一个全局的private product p;然后在ispostback外面p=bll.getpro(id)  可是这样的话 某个按钮的postback 会再次执行这个方法 来获取这个model,也就是  如果我放在ispostback外面的话 就执行2遍。如果放在ispostback里面的话 再次Postback  p为Null  。  倒是可以把p定义成static的  请问 是再查询一次好 还是用static放在 !ispostback里面好?

JackDuan的主页 JackDuan | 初学一级 | 园豆:183
提问于:2012-01-09 13:13
< >
分享
最佳答案
0

1. 绝对要禁止使用static变量——如果是只读的还好,否则同时有两个用户访问该页面,A用户改了product对象的属性1,那么B用户看到的是product对象改过之后的。试想两个人同时修改,会是什么结果?

2. 放在ispostback外面,你说的执行2遍是什么意思?是指加载的时候会执行一遍,点击按钮的时候又运行一遍?这不会影响代码的正确性,所以即使执行了2遍也没有关系。

3. 你什么时候要用这个值?建议做成属性或方法,类似于这样

private Product GetProduct()

{

    if(product==null)

{

  product = bll.GetProduct(id);

}

   return product;

}

也不存在同一个对象取了2次的情况

小彬 | 小虾三级 |园豆:947 | 2012-01-09 22:15
其他回答(2)
0

不要用PostBack 

dudu | 园豆:37776 (高人七级) | 2012-01-09 13:16

dudu老大的意思 定义一个 全局的static变量?

支持(0) 反对(0) JackDuan | 园豆:183 (初学一级) | 2012-01-09 13:22

标准的 读取model 然后修改的代码应该是啥样的呢?

支持(0) 反对(0) JackDuan | 园豆:183 (初学一级) | 2012-01-09 13:25
0

执行两遍有什么问题?http是无状态的,第二次必然要重新为变量赋值。在Page类里使用静态变量是更糟糕的做法,因为所有用户都有可能去修改它。你可以利用缓存机制,让第二次读取速度更快,或者用ajax的方式。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-01-09 13:49

水牛刀刀  给个 读取实体 然后修改的例子吧

支持(0) 反对(0) JackDuan | 园豆:183 (初学一级) | 2012-01-09 13:54

还有 您说的这个 “在Page类里使用静态变量是更糟糕的做法,因为所有用户都有可能去修改它”是什么意思呢

支持(0) 反对(0) JackDuan | 园豆:183 (初学一级) | 2012-01-09 16:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册