首页 > 解决方案 > 多个浏览器选项卡中的 asp.net Web 表单

问题描述

我在网格视图中有一个网格视图和一个编辑按钮。在编辑按钮上单击我正在打开一个新的 aspx 页面,其中包含用于输入数据的文本字段。当用户复制 gridview 的 URL 并在任何浏览器的新选项卡中打开它时,然后单击两个不同记录的编辑按钮。如果用户更改第一个选项卡中的任何内容并提交。它会更改第二个选项卡上记录的信息。发生这种情况是因为我将会话中的用户 ID 传递给表单 aspx 页面,并且当用户在新选项卡中打开第二条记录时会话得到更新。

是否只有两种方法可以将数据传递到 aspx 页面?

  1. 使用会话
  2. 使用查询字符串

我不想使用查询字符串。请帮忙谢谢。

标签: c#asp.netwebforms

解决方案


您正在编写一个 ASP.Net 应用程序,所以最终您能做的只有这么多。您可以通过浏览器请求一些东西,但如果他真的这样做,这完全取决于它。

您可以使用HTML Links 目标属性使其不太可能意外发生。这要求浏览器重新使用该记录的任何已打开的选项卡。但这不会阻止专职人员仍然打开 2 个副本。

一般来说,避免竞争条件的一种非常简单的方法是SQL rowversion列。您与其余部分一起检索行版本。您将它保存在一个隐藏的公式字段中(这就是它们的用途)。写入更新时,在写入之前检查它是否仍然匹配。如果是,你更新。如果不是,那么从那时起有人修改了记录,而您拒绝更新。可以是另一个选项卡中的同一用户,也可以是世界尽头的另一个用户。可能是这个标签是一年前打开的,在睡眠模式下存活。没关系 - 任何更改都会触发此保护。


推荐阅读