每个会话的WebForm的单个实例

时间:2012-08-09 13:31:41

标签: c# javascript asp.net

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

2个网页: Index.aspx - Work.aspx

Index.aspx :Stadistics和有关他们在点击将其重定向到Work.aspx的链接后将要执行的工作的信息。

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

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

我不知道实现这一目标的最佳方法是什么,因为我在Mutex上发现的所有内容都基于winforms。 (如果碰巧是你有一些关于在webform中处理互斥的信息的链接那么我可以从那里开始,但我还没找到)

非常感谢任何帮助。 感谢。

修改 Work.aspx是一个弹出窗口,因此员工可以同时打开两个webforms。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

如果我理解您的要求,可以尝试使用Hyperlink.Target属性始终在同一个命名窗口中打开Work.aspx。

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

更新以回复评论

  

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

您需要做的是“记住”Work.aspx服务器端的状态,例如通过将状态数据存储在Session(或其他地方:例如数据库)中。然后每次请求Work.aspx时,渲染具有适当状态的版本。

  

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

我认为应该始终“允许”他们打开一个新的Work.aspx。毕竟,用户可能已经关闭了之前的Work.aspx窗口,您将无法了解此服务器端。您应始终允许用户“开始工作” - 但显示Work.aspx的最新状态,您已将其保存在服务器端(例如会话)。