如何最好地拦截ASPX调用类后面的代码?

时间:2013-12-11 08:26:53

标签: asp.net .net

我有一个带有Login.aspx的已编译的.NET Web应用程序,它在代码隐藏类中设置用户名/密码字符串值,然后触发OnClick Page事件以执行身份验证。 现在,我需要添加额外级别的身份验证,因此我需要拦截此调用,将凭据传递给我的程序集中的类,然后有条件地将它们传递给现有的类/程序集。

如何做到最好?注意,codebehind类是编译的,所以我没有代码可以在那里更改它,但是我确实有Login.aspx。

我是.NET网络应用程序的菜鸟,所以我不知道从哪里开始。我希望不得不重写Login.aspx或用MVC替换它,使用jQuery有条件地设置代码隐藏,或者......不确定。请指教。

1 个答案:

答案 0 :(得分:1)

假设您的" OnClick Page事件"是按钮点击处理程序,您可以执行以下操作:

创建一个继承自您拥有的代码隐藏类的新类:

public class MyAuthForm : WebForm1
{
}

(其中WebForm1是已编译类的名称 - 可能"登录"或类似的情况。)

然后在该类中添加Click事件的覆盖:

public class MyAuthForm : WebForm1
{
   protected new void Button1_Click(object sender, EventArgs e)
   {
      // do your stuff

      base.Button1_Click(sender, e);    
   }
}

更改Login.aspx中的代码以使用刚创建的新类:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyAuthForm.cs" Inherits="WebApplication1.MyAuthForm" %>

这应该拦截按钮单击事件,并允许您在将其传递给已编译的代码隐藏类中的原始单击事件之前处理它。