событие главной страницы asp.net не срабатывает - PullRequest
1 голос
/ 23 июля 2010

Я ставлю точку останова в защищенном методе void Page_Load (отправитель объекта, EventArgs e) моей главной страницы, но когда я запускаю сайт, он не достигает этой точки останова.

Почему происходит событиене стреляет?Я хотел бы использовать это событие вместе с другими, такими как событие Init, чтобы проверить, не истек ли сеанс при каждой загрузке страницы ...

Спасибо.

Ответы [ 8 ]

6 голосов
/ 27 июля 2011

Вы можете проверить, что AutoEventWireup имеет значение true в объявлении Master.

<%@ Master Language="C#" MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="MasterPages_Main" %>

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

3 голосов
/ 23 июля 2010

Возможно, проблема в том, что ваша страница .aspx неправильно ссылается на вашу страницу .master.Убедитесь, что в верхней части вашей страницы .aspx есть строка, подобная следующей:

<%@ Page Title="Some Title" Language="C#" MasterPageFile="Main.Master" CodeBehind="MyPage.aspx.cs" Inherits="MyApp.MyPage" %>

Другая возможная проблема заключается в том, что ваша страница .master не ссылается на правильную (или какую-либо другую)сборка.Убедитесь, что верхняя строка вашей страницы .master похожа на следующую:

<%@ Master Language="C#" AutoEventWireup="True" CodeBehind="Main.master.cs" Inherits="MyApp.Main" %>
2 голосов
/ 23 июля 2010

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

  1. Убедитесь, что ваша дочерняя страница вызывает правильную главную страницу.

  2. Мастер Page_Load запускается после дочерней Page_Load, поэтому сначала убедитесь, что вы отладили выполнение дочерней страницы.

  3. Убедитесь, что вы действительно подключили событие Page_Load, если используете VB.NET.

2 голосов
/ 23 июля 2010

Возможно, вы захотите попробовать создать базовый класс типа Page, который обрабатывает вашу проверку сеанса. Оставьте главные страницы для дизайна страницы. Если у вас есть несколько главных страниц, вам придется дублировать этот код на каждой, но если ваши страницы наследуются от одной базовой страницы, логика проверки сеанса будет в одном месте.

1 голос
/ 18 сентября 2014

У меня была немного другая проблема и другое решение.

На всякий случай, если у кого-то такая же ситуация, как у меня.

У меня была вложенная главная страница, а элемент управления и связанный с ним метод были в «среднем» мастере. Методы НЕ вызывались, когда они помещались в файл .cs для средней главной страницы. Но они вызывались, когда включались в .master page в теги скрипта, как описано выше в "petra".

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

1 голос
/ 04 декабря 2011

У меня была такая же проблема - загрузка страниц раньше выполнялась, но что-то пошло не так и остановилось.

Что исправило то, что событие page_load помещалось в файл .master, а не .master.cs

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        //put your code here
        //any function u wanna call declare it in the code file as public

    }
</script>
0 голосов
/ 02 января 2016

Моя ошибка произошла из-за строки комментария >>> base.OnLoad (e);в Site.Master.cs

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
}

МИР

0 голосов
/ 23 июля 2010

Вам нужно проверить объявление страницы, чтобы убедиться, что она ссылается на правильную masterpage и masterpage, чтобы убедиться, что она ссылается на правильный унаследованный класс.

...