如果任何字段发生变化,请锁定ASP.NET页面

时间:2015-06-09 17:45:58

标签: c# asp.net-4.0

当用户尝试编辑该页面上任何控件的值时,我想锁定一个ASP.NET页面。如果他只是观看它应该很好。当他编辑任何字段时,页面应该被锁定,而其他用户应该仍然能够查看但不能编辑它。在ASP.NET 4.0中是否有任何内置且更简单的方法来执行此操作?我们应该使用客户端JQuery / Javascript做什么?

修改: - 这是必需的场景,如果用户打开页面并对该页面中的任何字段进行更改,则应该锁定该页面,这标记了数据库上的标志(用户ID)。当其他用户尝试编辑或更改页面时,它会显示一条消息,指出此页面已被锁定并禁用“提交”按钮。但如果其他用户只是查看而没有进行任何其他更改,这应该是好的。

请告诉我。我发现Onchange事件可以用来做这个,但我有一个问题,因为我是ASP.NET的新手? onchange事件是否可用于控件?以及html控件和它们的ASP.NET Counter部分之间究竟有什么区别。

谢谢,

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您可能需要在数据库中使用一个标志来指示表单是否正在编辑,如果是,则由谁编辑。

我认为最好重新审视一下你需要做什么以及如何以另一种方式实现它。处理并发性是棘手的,但必须有更好的解决方案。

最后," html控件和它们的ASP.NET Counter部件之间究竟有什么区别?"

ASP.NET服务器控件基本上是用ASP.NET标记编写的,并且通常会在vanilla html元素上引入许多其他功能。最值得注意的是能够通过名为ViewState的东西访问服务器端并保留状态。在运行时,ASP.NET控件将呈现为vanilla html。

答案 1 :(得分:0)

正如Claies所指出的,网页默认是无状态的。如果你真的需要做这样的事情,你必须自定义开发它。我的直接想法是,如果你真的必须这样做,这不是一个完美的解决方案:

也许首先向表中添加几列以跟踪页面状态,锁定(真/假),用户(如果有的话,用户ID),LockDate(当前日期/时间)

默认情况下,在页面上保持控件启用= false。 在页面上放置一个“编辑”按钮。在On-click中启用控件和表格,Set Locked = true,用户ID并保存日期和时间,以便您知道是否有人正在编辑。当用户保存页面时,解锁页面(Locked = false或null)

请记住,如果用户从未完成并退出而未保存,则页面将处于锁定状态。所以你可能不得不考虑在页面上放一个计时器并显示一条消息来完成编辑,比如5分钟。如果用户未完成编辑,则更改页面的锁定状态,以便其他人可以编辑。

基本上你必须发展你的国家管理。