比如产品的实体信息吧 我现在是定义一个全局的private product p;然后在ispostback外面p=bll.getpro(id) 可是这样的话 某个按钮的postback 会再次执行这个方法 来获取这个model,也就是 如果我放在ispostback外面的话 就执行2遍。如果放在ispostback里面的话 再次Postback p为Null 。 倒是可以把p定义成static的 请问 是再查询一次好 还是用static放在 !ispostback里面好?
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次的情况
不要用PostBack
dudu老大的意思 定义一个 全局的static变量?
标准的 读取model 然后修改的代码应该是啥样的呢?
执行两遍有什么问题?http是无状态的,第二次必然要重新为变量赋值。在Page类里使用静态变量是更糟糕的做法,因为所有用户都有可能去修改它。你可以利用缓存机制,让第二次读取速度更快,或者用ajax的方式。
水牛刀刀 给个 读取实体 然后修改的例子吧
还有 您说的这个 “在Page类里使用静态变量是更糟糕的做法,因为所有用户都有可能去修改它”是什么意思呢