Визуальная студия 2010 - метод preInit - PullRequest
1 голос
/ 04 июля 2011

Я использую VS2010, и я рассматриваю некоторые примеры в своей книге, и я пытаюсь найти метод preInit. Я помню, что в VS2008 для VB.Net все методы Page LifeCycle были в верхнем правом углу раскрывающегося элемента «Страница» (верхний левый угол).

Как я уже сказал Я использую VS2010 и в C # . В моем верхнем левом раскрывающемся списке все, что я вижу, это _Default. Единственное событие PLC, которое я вижу, - Page_Load. Нужно ли вручную вводить метод preInit или есть способ его автоматического заполнения, как я видел в VB с использованием 2008 года?

enter image description here

Я последовал за ответом Кирилла, и он сделал все, что он сказал, что будет. Тем не менее, это то, что он произвел (Default.aspx - это имя страницы, которую я использую):

private void _Default_PreInit(object sender, EventArgs e)
{
 ...
}

Когда я ставил точку останова, он никогда не попадал в этот блок кода, и код никогда не запускался ...

Однако, когда я выписал это вручную, используя следующее:

protected void Page_PreInit(object sender,EventsArgs)
{
...
}

Точка останова и код в этом блоке сработали!

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 04 июля 2011

Здесь - ответ.Если коротко:

  • В обозревателе решений щелкните правой кнопкой мыши страницу и выберите «Просмотреть конструктор компонентов» из контекстного меню
  • , откройте панель / окно свойств (нажмите F4)
  • теперь щелкните желтую стрелку / значок вспышки, и вы увидите список всех событий страницы
  • дважды щелкните событие, для которого вы хотите добавить обработчик

ОБНОВЛЕНИЕ

Да, вы правы, это не работает, как ожидалось.Извините за публикацию ответа без проверки, действительно ли он работает.Я не знаю, как это исправить, но я по крайней мере нашел объяснение.

Помимо упомянутого вами метода, он также добавляет что-то вроде

private void InitializeComponent()
        {
            this.PreInit += new System.EventHandler(this._Default_PreInit);
        }

Это происходит из старой модели проектирования / компиляции.После того, как MS изменила модель проектирования / компиляции по умолчанию в ASP.NET 2.0., По умолчанию для AutoEventWireup установлено значение true, которое указывает компилятору автоматически подключать обработчики событий из кода позади или рядом с файлом, используя соглашение об именах (для событий страницы), например,

protected void Page_Load(...)
{
}

автоматически прикрепляется за кулисами:

this.Load += new EventHandler(this.Page_Load)

Таким образом, соответствующее поведение Visual Studio 2010 не изменилось в соответствии с этими изменениями, и он по-прежнему создает обработчики событий после старойсоглашение об именовании и добавление метода присоединения делегата, который больше не требуется.

0 голосов
/ 06 июля 2011

Я нашел тогда ответ на мой вопрос. Я готовлюсь к экзамену MCTS 70-515 и к главе 3 (стр. 111) в уроке «Понимание жизненного цикла и обработки событий ASP.Net». Прочитал следующий абзац:

Добавление обработчика событий C #

"Редактор кода для C # также имеет раскрывающийся список обработчиков событий. Однако он содержит только доступ к событиям, для которых вы уже предоставили обработчики. Среда C # предоставляет инструмент для подключения событий управления, но он не предоставляет такого инструмента для событий Page. Для этого вам необходимо вручную кодировать обработчик событий."

Однако на веб-стороне VB.Net вы получаете то, что я первоначально описывал, с двумя раскрывающимися списками.

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