每个会话的 Web 窗体的单个实例

Single Instance of a WebForm per Session

本文关键字:单个 实例 窗体 Web 会话      更新时间:2023-09-26

我可以用来解决问题的东西:C#ASP.NET,Javascript

2 网页: 索引.aspx - 工作.aspx.

索引.aspx:静态和有关他们将要执行的工作的信息,一旦他们点击将他们重定向到 Work.aspx 的链接。

工作.aspx:开始与客户合作。

所以,我需要完成的是Work.aspx的单个实例。因为当他们使用 Work.aspx 时,Index.aspx 仍然是开放的(他们需要研究数据和东西),但如果他们点击 Work 的链接.aspx他们可以打开另一个实例,这不是我想要的。

我不知道实现此目的的最佳方法是什么,因为在 Mutex 上找到的所有 Ive 都是基于 winforms。(如果碰巧您有一些链接,其中包含用于在网络表单中处理互斥锁的信息,那么我也许可以从那里开始,但我还没有找到)

任何帮助将不胜感激。谢谢。

编辑。Work.aspx 是一个弹出窗口,因此员工可以同时打开两个 Web 表单。

没有也不可能有办法做到这一点。Web 应用程序本质上是无状态的,与用户的每次交互都由单独的请求-响应对组成。asp.net 为每个请求创建 Web 表单的新实例,使用它来处理请求,然后删除它。

那么,您究竟需要它做什么?在大多数情况下,可以有多个页面,但数据仍然相同。

如果我明白你在问什么,你可以尝试使用超链接.Target属性始终在同一命名窗口中打开Work.aspx。

<asp:Hyperlink runat="server" ... NavigateUrl="Work.aspx" Target="work" ... />

更新以回应评论

他们触发了一些事情,以便用他们需要的信息填充工作.aspx......

你需要做的是"记住"工作的状态.aspx服务器端,例如通过将状态数据存储在Session(或其他地方:例如数据库)中。 然后,每次请求 Work.aspx 时,呈现具有相应状态的版本。

我现在能想到的是:当他们第一次开放工作时.aspx第一次。将会话变量设置为 true。下次他们再次点击 START-WORKING 时,请事先检查该会话变量以了解它们是否被允许。你指的是像乔这样的东西吗?

我认为他们应该始终被"允许"打开新的作品.aspx。 毕竟,用户可能已经关闭了上一个 Work.aspx 窗口,您不会知道这个服务器端。 您应该始终允许用户"开始工作" - 但显示具有最新状态的工作.aspx,您已将其保存在服务器端的某个地方(例如会话)。