PreRender в ASP.NET Master Page не запускается - PullRequest
5 голосов
/ 08 декабря 2011

И Page_PreRender, и Page_Load не работают на главной странице, с которой я работаю. Page_Init, однако, по любой причине. AutoEventWireup имеет значение true.

public partial class MyMaster : MasterPage
{
    public MyMaster()
    {
        // tried this too, but doesn't matter whether this LoC
        // is there or not
        this.PreRender += Page_PreRender;
    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        // does not fire
    }
}

Я тоже попробовал это в пустом веб-проекте. Там все отлично работает.

Редактировать: я понял, что установка EnableViewState на true исправляет это:

<%@ Master Language="C#" MasterPageFile="~/MainMaster.master" AutoEventWireup="true"
    CodeBehind="MyMaster.master.cs" Inherits="MyMaster" EnableViewState="false" %>

Но я не хочу, чтобы ViewState был включен. Переопределение OnPreRender также работает независимо от значения EnableViewState. Теперь я задаюсь вопросом, почему, и просто использование метода переопределения кажется мне хакерским. Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 08 декабря 2011

Я предлагаю использовать AutoEventWireup в директиве страницы, поэтому попробуйте, как показано ниже:

В директиве вашей страницы <%@ Page ... используйте AutoEventWireup="true", а на главной странице удалите PreRender подписку на событие:

public MyMaster()
{
    // tried this too, but doesn't matter whether this LoC
    // is there or not
    //this.PreRender += Page_PreRender;
}

Надеюсь, теперь все хорошо, спасибо за ваше время.

Редактировать: Пожалуйста, проверьте файл web.config и убедитесь, что AutoEventWireup не установлен на False.

...