Вы действительно никогда не должны вызывать обработчик событий из другого кода.
У меня действительно недостаточно информации для продолжения, но я могу представить два сценария, которые могут дать вам представление о том, что вы должны сделать это: сценарий с общей страницей и сценарий с общей бизнес-логикой.
Если вы надеетесь использовать какой-то блок кода на нескольких страницах, тогда я настоятельно рекомендую вам создать родительский класс, производный от класса "Page", и поместить туда весь общий код. Это НЕ то же самое, что отношения хозяин-раб; это просто способ реализовать код, который будут использовать все ваши страницы. Например, я использую родительский класс для управления строго типизированным классом сеанса.
Если вы хотите поделиться или реализовать бизнес-логику, и бывает, что вы уже поместили ее в класс Default.aspx.cs, то вам необходимо переосмыслить свою архитектуру. Даже если вы не используете подход MVC, я настоятельно рекомендую вам подходить ко всем, кроме самых тривиальных сайтов, с трехуровневым подходом (как только вы это сделаете, дополнительная работа будет тривиальной). В этом случае вы создадите классы, которые реализуют вашу бизнес-логику и используют только код с выделенным кодом для работы с пользовательским интерфейсом. Таким образом, ваш типичный метод code-behind будет извлекать некоторые вещи из пользовательского интерфейса, создавать класс бизнес-логики и передавать его, а затем обрабатывать результаты (или наоборот). В этом случае вы сможете вызывать класс бизнес-логики, который реализует код, которым вы хотите поделиться из любого места, включая ваши классы тестирования.