创建全局ASP.NET功能?

时间:2010-04-20 23:19:56

标签: asp.net function call global

我认为这是一个非常简单的问题......如何将asp.net函数设为全局?例如如果我在default.aspx上定义了函数GetUserInfo(),如何从mypage2.aspx调用此函数?

5 个答案:

答案 0 :(得分:14)

另一种方法是创建一个所有页面都继承的基页类:

public class BasePage : System.Web.UI.Page
{
     public string GetUserInfo()
     {...}

}

所有需要此方法的aspx页面都可以继承BasePage类。由于BasePage继承自System.Web.UI.Page,因此他们也可以访问所有页面方法和属性。

答案 1 :(得分:3)

我将所有“全局”内容都放在一个名为cProgram或cApp的类中。从所有全局属性开始,然后是我的常用方法。

public class cApp
{

             private readonly static string _Env = 
!string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["GenMgrEnv"]) ? 
    System.Configuration.ConfigurationManager.AppSettings["GenMgrEnv"] : "Prod";


     public static string Env
    {
        get
        { return _Env; }
    }


    public static int version
    {
        get { return 3; }
    }


    public static string CurrentUser()
    {
        return (System.Web.HttpContext.Current.Request.Cookies["UID"] != null ? System.Web.HttpContext.Current.Request.Cookies["UID"].Value : "");

    }

    public static Guid UserId
    {
        get
        {
            if (System.Web.HttpContext.Current.Session["UserId"] == null)
            {
                loadUserIdentity();
            }
            return new Guid(System.Web.HttpContext.Current.Session["UserId"].ToString());
        }

    }



    public static Control FindControlRecursively(String id, Control parent)
    {
        if (parent == null)
            return null;

        foreach (Control control in parent.Controls)
        {
            if (control.ID == id)
                return control;

            Control child = FindControlRecursively(id, control);

            if (child != null)
                return child;
        }
        return null;
    }
}

答案 2 :(得分:2)

你可以......

  • 在helper / utility类中定义您的GetUserInfo()方法,并根据需要从您的页面调用它,或
  • 创建包含GetUserInfo()方法的基页类,并让您的aspx页继承自它。

答案 3 :(得分:1)

打开default.aspx并查看该页面的类名称(它可能是_Default)。确保GetUserInfo()是一个公共静态方法,然后您可以从mypage2.aspx调用它,如:

_Default.GetUserInfo();

当然,上述方法会很快变得混乱。一种更好的方法是将类文件添加到项目中,并将GetUserInfo()方法移动到该文件中。实现类似的东西:

public static class Utilities
{
    public static string GetUserInfo()
    { ... }
}

允许您通过以下方式在任何页面上调用该方法:

Utilities.GetUserInfo();

答案 4 :(得分:1)

您还可以创建一个静态类,您可以在其中放置可以从任何位置调用的函数。

static class MyClass {
   void MyFunction() {
   }
}

MyClass.MyFunction();

或者在VB中:

Module MyModule
    Public Function MyFunction() 

    End Function
End Module

MyModule.MyFunction()