在C#(.Net 3.5)中导航离开页面时调用方法的方法?

时间:2011-04-18 09:33:09

标签: c# .net asp.net .net-3.5

我正在开发一个项目,一旦用户被定向到某个页面,他们会收到一定级别的“身份验证”,如果用户之前尝试离开该页面,我想删除此“身份验证”他们填写了表格。

我想知道这是一种在重定向到适合Page事件生命周期的特定页面时调用方法的方法(或者如果你有建议,可以使用另一个方法)?

我是C#和.Net框架的新手,所以如果这不是标准的话,那就告诉我这是什么样的正确方法。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以尝试使用由JavaScript事件触发的PageMethod。这需要aspx中的ScriptManager。

实施例: 的JavaScript

function LeavePage(e) {
    PageMethods.RevokeAuthentication();
}

window.onbeforeunload = LeavePage;

C#代码背后

[PageMethod]
public static void RevokeAuthentication()
{
    // Do stuff here
}

然而,这种方法并非万无一失。如果客户端的浏览器禁用了脚本,则JavaScript将无法运行。

也许更好的方法是使用Session处理MasterPage中的身份验证。 MasterPage类似于PHP开发人员使用包含的方式。

E.g。 OnLoad检查页面,如果pageName允许更高的身份验证,请设置它,否则撤销它。

答案 1 :(得分:0)

您的页面不会知道它正在被导航,因为它实际上是无状态的。一旦页面由C#生成,它就会被传输到浏览器。该页面不会在C#中“生效”。一旦生成,那就是它。

您可以使用会话变量来跟踪用户的“身份验证”级别。如果他们点击其他页面,您可以检查此变量的值并采取相应措施。如果他们填写表格,则在会话中记录该事实。

另一种选择是在用户离开页面时使用javascript回调服务器。这不会在Page事件生命周期内起作用,因为它已经完成了

这种“身份验证”是否存在很长时间?你需要坚持下去吗?