ASP.NET母版页中的PreRender未触发

时间:2011-12-08 12:49:27

标签: c# asp.net master-pages viewstate autoeventwireup

Page_PreRenderPage_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
    }
}

我也在一个空的Web项目中尝试过。它工作得很好。

修改:我发现将EnableViewState设置为true会修复它:

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

但我不希望启用ViewState。无论OnPreRender有什么价值,覆盖EnableViewState也可以。现在我想知道为什么,只是使用覆盖方式对我来说似乎是个hacky。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:-1)

我建议在页面指令中使用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