在多个页面中重复使用相同的方法

时间:2014-05-28 16:45:00

标签: c# asp.net webforms

我有一个方法

public void CheckLogin()
{
    if ((Session["UserName"] == "") || (Session["UserName"] == null))
    {
        Response.Redirect("Account/Login.aspx");
    }
}

我不想在每一页都重写它。如何定义这一次并在其他页面中调用此函数?

6 个答案:

答案 0 :(得分:2)

您通常将其放在实用程序类中。将该功能标记为静态。将实用程序类放在App_Code文件夹中(如果您没有,请将此文件夹放在站点的根目录中)。确保您的班级有适当的使用陈述。

using System;
using System.Web;

public class AuthenticationUtilities
    {
    public static void CheckLogin()
        {
        if (HttpContext.Current.Session["UserName"]==null || HttpContext.Current.Session["UserName"]=="")
            {
            HttpContext.Current.Response.Redirect("Account/Login.aspx");
            }
        }
    }

然后你就可以从这样的页面中调用它......

AuthenticationUtilities.CheckLogin();

顺便说一下,你重新发明了轮子。您应该使用诸如Identity之类的技术,而不是使用自己的技术。我只提供这个答案,以防你需要在另一个点创建一个共同的各种页面的功能。

答案 1 :(得分:1)

使用继承为您的网页提供通用功能。

创建一个执行常规任务的页面,然后从该页面派生所有其他页面。

public class MyPage : MyBasePage

使用这种方法,不需要显式调用任何东西。它将全部在基类中处理,然后您可以根据需要进行扩展。您需要记住的是更改类声明,以便它继承自您的基类。

另一种方法可能是将其粘贴在一个公共母版页中。但我并不喜欢这种方法。

答案 2 :(得分:1)

如果您正在进行此类授权检查,则可能需要处理授权事件。这很常见,有一种内置的方法可以做到这一点:

来自User-based Authorization ...

步骤1:在Web.config中定义URL授权规则

第2步:修复未经授权,经过身份验证的用户的工作流程

答案 3 :(得分:0)

使用静态类创建一个类文件可能被称为“SessionCheck.cs”

并将此函数写为静态

public Static void CheckLogin()

    {

        if ((Session["UserName"] == "") || (Session["UserName"] == null))
        {

            Response.Redirect("Account/Login.aspx");

        }

    }

然后您可以从任何页面访问它,如

SessionCheck.CheckLogin();

答案 4 :(得分:0)

将它放在Session Helper类中。

public class SessionHelper
{
    public static void CheckLogin()
    {
        if ((Session["UserName"] == "") || (Session["UserName"] == null))
        {
            Response.Redirect("Account/Login.aspx");
        }
    }
}

然后你这样称呼它。

SessionHelper.CheckLogin();

答案 5 :(得分:0)

创建一个从Page,

扩展的类文件
public class Navegable: Page

所以在init函数中放入你的代码

void NavigablePage_PreInit(object sender, EventArgs e)
        {
if ((Session["UserName"] == "") || (Session["UserName"] == null))
        {
            Response.Redirect("Account/Login.aspx");
        }
}

因此,Web表单从navegable扩展。

MyPage : Navegable

那就是,从navegable扩展的所有webform都将运行验证