用户
 找回密码
 立即注册

46

主题

119

帖子

1404

积分

金牌会员

Rank: 6Rank: 6

积分
1404
发表于 2019-11-3 14:27:55
本帖最后由 csfeixia 于 2019-11-9 16:44 编辑

在一个Comm类中,定义一个变量,如下
public static string _loginUsername="";
看起来是不是很熟悉,很正常——但是这样错了,坚决不能这样用
因为所有登录这个APP的用户都是用的同一个变量,张三登录时名称是张三,李四显示的是李四,当张三再引用这个变量时,发现已经不再是自己了,这下明白了没。。(我也是当用户数据出问题后才明白,嘿嘿)


那怎么办呢?已经这样做了,那么多的地方引用了这个静态字段,总不能全部改成session取值吧,能不能转换过来,办法肯定是有的,我就用了这个方法,
在原静态中改用属性 取Session中取值,如果在类中,就直接public static string _loginUsername
{
get {
new Smobiler.Core.Controls.MobileForm().Client.Session["变量名"].ToString();
}
set {}
}

改变原赋值模式,以前是静态变量=

现在要改成 Client.Session["xxx"]=   如果在类中,同理
new Smobiler.Core.Controls.MobileForm().Client.Session["变量名"]="";

好歹 完成了,测试了一下,基本放心了

希望后来者不要跟我一样哦,自己坑自己。。。。
以上是全局静态变量,那窗体中的静态变量会不会也有问题?

于是我测试了一下,发现 在窗体中的变量是没有问题的,比如datatable的行数,张三进界面查询出来是10行,李四进同样界面查出来0行,这个时候张三重新取当前的数据行数,是不会变成0行的。当然我是这样处理的,在每一个窗体中
using(dt=静态方法())
{

}
2.带参数的静态方法应该也是没有问题的,因为界面上的参数是不一样的。

这下放心了


使用道具 举报 回复
发表于 2019-11-4 13:54:26
定义一些静态变量或者一下静态类 在MobileGlobal这个类里面保存一些登录信息什么的有什么不妥吗
使用道具 举报 回复 支持 反对
发表于 2019-11-4 14:21:11
大哥佩奇 发表于 2019-11-4 13:54
定义一些静态变量或者一下静态类 在MobileGlobal这个类里面保存一些登录信息什么的有什么不妥吗 ...

如果其它用户共享就可以,如果是跟着登录用户走的信息,就不能这样,比如登录的用户姓名,如果用的public静态,那下一个用户登录的时候,自己这个终端名称也会跟着变,变成他那个名称,我也是从这里发现不对劲了,明明张三没有录单,结果保存名字显示的是张三的。
使用道具 举报 回复 支持 反对
非常感谢提醒
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册