在用网站制作过程中,经常遇到具有流程性的页面,先操作第一个页面(不关闭),操作完成后,出现第二个页面。假设第一个页面有个编辑按钮,在操作完第二个页面后,不能允许在操作第一个页面的编辑操作。但是原先的第一个页面没有被关闭,还保持原有的状态,还是能编辑。请问各位大神有没遇到这样的问题,又是怎么解决的?谢谢各位大哥
没法解决。你最好把 B 做成弹出页面,或者实现正真的跳转,即 A 页面要关闭,B 保存后再跳转回 A 页面。跳转的含义是发起跳转的页面会关闭。
您好,你的想法这里也有个问题 假如两个人(黑人,白人 呵呵~~~),黑人是打开A页面,白人打开A页面,操作了B页面。白人是实现了你的效果,但是黑人还是可以点编辑的。
@S-Roc: 我不明白你想要什么,但是很可能你不明白 web 程序的原理。你说的这种方式是需要服务器去控制的,也就是说 白人在美国,黑人在非洲,它们都从自己的物理位置去访问你的网站的 A 页面,那么要实现你说的功能,服务器必须锁定 A 页面,一种方式就是白人打开 A 页面后,服务器要记录下 A 页面已经被访问过了(并设置一个超时),那么黑人再请求 A 页面时,服务器就拒绝响应,并告知黑人,此页面当前被锁定,只有等到白人点击了“保存”或超时时间到了后,黑人请求 A 页面时,服务器才把A页面发送给黑人。另一种方式,服务器同样要记录 A 页面的修改状态,同时在 A 页面中使用 js 轮询查询是否有别的人在修改 A 页面,当白人开始编辑A页面(打开B页面)时,服务器记录 A 页面正在修改的状态,黑人打开 A 页面时,js 从服务器的查询结果是 A 页面正在编辑,那么 A 页面就禁用编辑功能。
所以我不知道什么叫我的想法有问题,你随便建立一个Asp.Net MVC 项目,试下 AccountController 上的管理用户的功能,你就知道我只是描述了一个正常的流程,我并没有提出自己的想法。
@Launcher: 您好,可能是我表达上不好,让您误会了。您的想法没有问题。sorry 。。我就是感觉在编程上,单线程与多线程,单页面与多页面在状态的关系,想的多了就感觉里面好复杂。
@S-Roc: 单线程和多线程的关系跟单页面和多页面的关系是两码事,你不能混在一起谈,这不是一个层面的概念,分属不同的范畴。
你大概是指数据过期吧,这个主要靠后端逻辑控制。对于A页面,用户1打开->用户2打开->用户2修改保存->用户1保存(提示失败,因为在提交之前数据已经变化了...)