【项目】——B/S开发中的Static陷阱

      今天在自测时,发现了一个非常”有趣“的问题,被惊出了一身冷汗,幸好发现的及时,搁这么一个炸弹在身边,着实令人心惊胆战。


      事情是这样的:在页面上有一个类似于计数器的功能,每点击一次按钮,计数器上的数字相应的增加和减少。在自测试时,计数器突然Out of Control了,老是弹跳着增加减少,顿时郁闷至极。看了一下代码,顿悟,原来是变量Static惹的祸。


      在CS开发时,在需要保存处理过的值时,用的最多的就是Static,现在BS开发,首当其冲的就想到了static,没想到给自己埋下了这么一大雷。为什么CS可以,BS就出问题了呢?这得从他们的运行机制来说:

      在CS模式软件开发过程中,我们通常不会关心应用程序是在哪里运行的,变量存放在哪里,客户端程序就运行在客户端,服务器端程序就运行在服务器端,一般情况下,二者除了数据库中的数据外基本没有其他共享的东西。所以这时客户端的用户大可放心的使用static变量,因为它们就存放在客户端程序中。但是,在Asp.net中的static已不同于CS中的static。原因很简单,就是因为在Asp.net中所有的用户将使用同一个static变量。这就意味着每一个使用该页面的用户对该变量的操作将会影响到其他用户。就拿计数器的例子来说,假设其初试值为0,因为此时只有我们自己在使用这个页面,当然不会有什么问题,但如果有两个人同时连接到这个页面,如果A单击了增加一次,则B刷新页后显示器将显示1,如果B再单击增加一次,则计数器变成2,两个人刷新页面后就出现问题了:点击一下,计数器有弹跳增加的现象——这就是因为两个人共用的是服务器上同一个static变量,任何一个人对它的的操作都会在使用该页面的他人的浏览器中表现出来。问题就出在这里。


      但是,这个我们应该如何解决呢?这时候,ASP.NET的ViewState就登场了,其作用相当于session,既可以保存变量,也可以保存对象。具体用法如下:

      1、保存值

             ViewState["intTest"]=intTest;      //存放普通变量times        
             ViewState["dtTest"]=dtTest;       //存放DataTable型对象dtOrders 


      2、读出ViewState的值

             intTest = (int)ViewState["intTest"]; 
             dtTest = (DataTable)ViewState["dtTest"]; 



      用ViewState传值是非常方便可靠的,既可以传变量,也可以传datatable等,因为它会统一把值当做对象object对待。所以,在我们读取ViewState的值时,一定要对ViewState的类型进行转换,否则,就会报错。




     


     


 


使用说明: 1 修改 配置文件 properties.config 和 web.config 的数据库连接参数,改后重新编译一下 2 登陆的用户名:admin 密码 123456 先进营销管理思想和现代信息技术的最佳结合。以客户关系管理为线索,集实用 CRM 及 OA 于一体,有效培养员工的 IT 工作习惯,建立完善的企业信息资源管理平台,实现有效客户关系管理。系统整个平台基于先进的B/S架构,不需要安装任何客户端,只要有网络的地方就可以使用,利用它您可以很方便的管理分布在全国乃至世界各地的销售团队和经销商,让管理无处不在。同时每个用户的销售管理平台都是一套独立的系统,都安装在用户自己的服务器上,客户资料和销售信息都保存在自己的服务器上,从根本上保证了数据信息的安全。 用户把平台安装在自己的服务器上后,可以自由分配帐号名称和数量,数量不限,使用期限不限, 是广大小企业的最优选择。 适用对象: 直销或分销模式的企业 以项目管理为主的企业 以客户服务为主的企业 对协同办公要求较高的企业 小型生产企业 CRM 产品及应用背景:( 小企业管理症状) 客户资源利用率低: 权威研究表明,开发一个新客户付出的代价至少是维持一个老客户代价的 6-8 倍。对很多公司而言,从来没有在老客户身上获取第二次交易,导致客户资源利用率低下。 客户满意率低: 客户对公司很多方面很不满意,即使产品品质再好,也会影响客户对公司产品的忠诚度和口碑传播。 客户流失现象: 公司对客户资源管理不善,导致许多销售人员将客户资源视为 “ 个人财产 ” ,经常因销售人员的变动导致公司客户的流失 销售缺乏控制: 销售任务和销售人员管理失控,销售经理常常感叹手下这帮 “ 兵 ” 一出去就如同大海浮萍,不知道他们每天都在做什么;销售人员却感叹公司销售计划无序可循,走向市场如同走向迷宫,只知道该完成多少销售任务,但如何完成,每天该做什么,任务分哪几个部分,每一步该怎么做? 团队各自为阵: 公司多个部门与某个客户有工作关系和交叉,由于信息不共享,内部沟通不畅,有分工无协作,不能形成团队作战能力。 沟通效率低下: 公司内部信息沟通不畅,影响工作效率,尤其是对客户反应能力。 工作思路紊乱: 公司除了少数的领导层能够很有条理的安排自己的计划和工作外,大多数人的思维没有条理,经常低效忙乱,杂乱无章。 采购和库存管理混乱: 每次订单一下来,采购都没法统计到库存到底有多少库存,经常会造成重复采购和缺料,而浪费资源和延误交货期。 系统功能: 1、销售管理: 包括6部分创建资源库、原始资料收集、客户线索开发、客户跟踪、商机销售、订单管理。 1)创建资源库:从网络上获得资源库,作为原始客户资料收集的来源; 2)原始资料收集:收集到大量的目标原始客户资料以备进行潜在客户的开发; 3)客户线索开发:集对前面收集到的大量陌生客户进行电话拜访,提供各种高成效的辅助工具提高潜在客户 开发的成功率; 4)客户跟踪回访:将心理学上提出的人类记忆储能曲线形成客户跟踪曲线,以自动提醒的方式帮助销售人员把握回访客户的最佳时机,达到用最少的联系次数取得商机或获得订单,有效的缩短成交客户的开发周期,从而能够最有成效的处理大批量的客户跟进。并能以最简便的方式作出联系记录; 5)商机销售:集对前面获得的销售机会进行推进销售,提供自动提醒跟踪与各种高效辅助工具,快速提高销售机会的成功率,同时可以进行销售失败原因分析; 6)订单管理:对在销售管道过程销售成功后获得的订单记录,进行全面的统计、分析与执行。自动生成动态的 [ 销售进度曲线 ] 与 [ 团队销售业绩排行榜 ] 图形。 2、售后管理 售后服务同样是销售管理不可缺少的环节,也将是新一轮销售的开始,完善的售后服务管理通常会触发客户更多的重复购买。本模块提供客户反馈与服务处理的管理:记录客户的反馈、安排服务处理任务与记录处理的结果。 3、产品管理   产品包括产品、价目表和产品分类三个模块. 产品主要管理本公司所销售或生产的产品档案信息. 价目表主要管理产品的价格信息, 一个价目表包括多个产品. 产品分类主要是对产品的类别进行管理, 使用户可以清楚的看到产品的分布, 用户可以快速的通过产品分类找到产品 . 4、订单管理 订单管理包括产品订单、项目订单和订单统计三个模块. 订单管理主要是对公司客户下的所有订单进行管理,有客户名称、订单编号、下单人、订单的状态等等 5、合同管理 合同管理包括合同资料管理、 合同附件、处理进展、回款管理、 合同统计等 6、采购管理 采购包括进货单、
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值