Создать глобальную функцию ASP.NET? - PullRequest
3 голосов
/ 21 апреля 2010

Я думаю, что это довольно простой вопрос ... Как сделать функцию asp.net глобальной? например Если у меня есть функция GetUserInfo (), определенная в default.aspx, как мне вызвать эту функцию из mypage2.aspx?

Ответы [ 5 ]

15 голосов
/ 21 апреля 2010

другой альтернативой является создание класса базовой страницы, который наследуют все ваши страницы:

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

}

Все страницы aspx, которым требуется этот метод, могут наследовать класс BasePage. Поскольку BasePage наследуется от System.Web.UI.Page, они также получат доступ ко всем методам и свойствам страницы.

3 голосов
/ 21 апреля 2010

У меня есть все мои "глобальные" вещи в одном классе, называемом 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 голосов
/ 21 апреля 2010

Ты мог бы ...

  • определите ваш метод GetUserInfo () в классе помощника / утилиты и при необходимости вызовите его со своих страниц, или
  • создайте базовый класс страниц, содержащий ваш метод GetUserInfo (), и пусть ваши aspx-страницы наследуются от него.
1 голос
/ 21 апреля 2010

Вы также можете создать статический класс, в который можно помещать функции, которые можно вызывать из любого места.

static class MyClass {
   void MyFunction() {
   }
}

MyClass.MyFunction();

Или в VB:

Module MyModule
    Public Function MyFunction() 

    End Function
End Module

MyModule.MyFunction()
1 голос
/ 21 апреля 2010

Откройте файл default.aspx и взгляните на имя класса для этой страницы (вероятно, это будет _Default). Убедитесь, что GetUserInfo() является публичным статическим методом, и вы можете вызвать его из mypage2.aspx, например:

_Default.GetUserInfo();

Конечно, вышеуказанный подход очень быстро запутался. Гораздо лучшим подходом было бы добавить файл класса в ваш проект и переместить метод GetUserInfo() в этот файл. Реализация чего-то вроде:

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

Позволит вам получить вызов метода на любой странице с:

Utilities.GetUserInfo();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...