Page_Init по сравнению с OnInit

Могли бы быть различные причины для различных людей. Для меня это преимущества.

  1. Предоставляет интегрированное чувство проекту. Например, у меня будут все связанные файлы проектов в единственном представлении.
  2. Обеспечивает, повысил производительность кода как [1 116]
  3. Подсветка синтаксиса
  4. Обращение блоков
  5. представление Intellisense
  6. Centralized базы данных и связал файлы UI.
  7. Функции отладки

    Конец дня, это помогает мне кодировать быстрее, чем я могу сделать в блокноте или wordpad. Это - довольно серьезное основание для меня предпочесть IDE.

27
задан ban-G 10 August 2009 в 16:03
поделиться

4 ответа

У меня был этот вопрос около года назад, я остановился на переопределении, а не на событиях On_X. Вот статья, которую я прочитал, в которой описаны плюсы и минусы: http://weblogs.asp.net/infinitiesloop/archive/2008/03/24/onload-vs-page-load-vs-load-event.aspx

17
ответ дан 28 November 2019 в 05:36
поделиться

По сути, в этих двух подходах нет никакой разницы. Это то, что делается в OnInit в классе Page:

protected internal override void OnInit(EventArgs e)
{
    base.OnInit(e);
    if (this._theme != null)
    {
        this._theme.SetStyleSheet();
    }
    if (this._styleSheet != null)
    {
        this._styleSheet.SetStyleSheet();
    }
}

Если мы откроем base.OnInit, мы увидим, что это место, где запускается Page_Init:

protected internal virtual void OnInit(EventArgs e)
{
    if (this.HasEvents())
    {
        EventHandler handler = this._occasionalFields.Events[EventInit] as EventHandler;
        if (handler != null)
        {
            handler(this, e);
        }
    }
}

Таким образом, в основном нет разницы в этих двух подходах. Однако вам нужно вызвать base.OnInit в вашем методе переопределения, если вы решите использовать переопределение вместо события. И еще одно отличие состоит в том, что если вы используете переопределение, вы можете запустить некоторый код сразу после применения Темы.

С уважением.

PS Единственное, что я рекомендую, это использовать один и тот же подход во всем приложении.

4
ответ дан 28 November 2019 в 05:36
поделиться

Здесь есть хороший ответ http://objectmix.com/dotnet/251824-oninit-page_init.html .

http: //www.justskins .com / forum / page_init-and-page_load-59045.html дает более подробный ответ.

Если AutoEventWireup имеет значение false, необходимо переопределить OnInit, поскольку Page_Init не доступен автоматически.

1
ответ дан 28 November 2019 в 05:36
поделиться

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

Кроме того, полагаясь на AutoEventWireup ], установленное на true , означает, что вы вводите накладные расходы на синтаксический анализ кода вашей страницы, поскольку ASP.NET должен будет создавать для вас любых делегатов во время выполнения.

11
ответ дан 28 November 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: