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

Mat*_*eid 5 c# asp.net viewstate master-pages 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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

编辑:我想通了,设置EnableViewStatetrue修复它:

<%@ Master Language="C#" MasterPageFile="~/MainMaster.master" AutoEventWireup="true"
    CodeBehind="MyMaster.master.cs" Inherits="MyMaster" EnableViewState="false" %>
Run Code Online (Sandbox Code Playgroud)

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

Eli*_*ain -1

我建议在 page 指令中使用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;
}
Run Code Online (Sandbox Code Playgroud)

希望现在一切都好,谢谢您的宝贵时间。

编辑:请签入您的web.config文件并确保AutoEventWireup未将其设置为False.