如何以编程方式将ASP.NET页面重新加载为新会话,就像首次访问该页面一样

时间:2012-10-25 17:28:40

标签: c# asp.net session web-applications

我有一个使用单个页面的ASP.NET Web应用程序,但是使一些控件不可见,而其他控件在整个工作流程中都可见。这是一个相当简单的应用程序,这就是为什么它只使用一个页面。

我不确定当用户点击取消按钮或完成工作流程时如何重新加载页面。以下是有关应用程序工作流程的一些详细信息......

  • 页面加载并显示一个LoginTable控件,其中包含一个包含员工姓名的下拉列表,以及一个pinpad,其中为所选员工输入了一个密码,以及一个登录按钮。
  • 单击登录按钮时,会发生回传,其中引脚已经过验证,如果有效,则保存大部分页面内容(标题除外)的Table控件将变为不可见,并且新的Table控件将变为可见,具体取决于关于当前状态(进入或退出)。
  • 此时,可以看到ClockInTable或ClockOutTable控件,并且LoginTable控件是不可见的。用户可以单击“取消”按钮或“时钟输入/输出”按钮(如果计时,还可以选择其他一些内容,例如工作现场和工作)。

我想要的是,当用户点击取消,时钟输入或时钟输出按钮(在回发后的任何其他处理之后),页面再次加载新会话并再次显示主要LoginTable就好像用户已重新启动浏览器并首次打开该页面。

我尝试过使用Session.Abandon(),然后在Global.asax的Session_End事件中,我做了     的Response.Redirect( “的Login.aspx”);

但这不起作用;它仍然只是重新加载页面的相同视图。

如何重新加载页面(不刷新页面),就好像它是第一次访问(即不是回发)?

另外,我是ASP.NET的新手,所以如果我误解了会话的工作原理,请告诉我。

3 个答案:

答案 0 :(得分:1)

您是否尝试过Response.Redirect() - 将用户转到同一页面?这应该加载页面,就好像它是一个新页面。它不会丢失会话数据。

答案 1 :(得分:1)

我不确定你能按照你描述的方式做到这一点。但是,您可以做的是将标志作为会话变量。称之为IsFirstComer。我不确定您的系统的工作流程如何,但每次新用户登录(尚未启动工作流程)或退出工作流程时,您都可以将其重置为true(需要重新开始),但是一旦用户启动了工作流程,您就将其设置为false。然后可以通过IsFirstComer的值控制您的控件行为。

答案 2 :(得分:0)

您是否在if(!this.IsPostback)方法中写了Page_Load,然后再尝试“Response.Redirect(page.aspx)”。