永久禁用AutoEventWireup

时间:2012-02-18 13:37:57

标签: asp.net

我正在开展一个性能非常重要的项目,我想永久禁用AutoEventWireup。问题在于页面和控制指令覆盖了web.config中的设置。由于此项目中将有许多协作者,因此在创建新页面和控件时不可能期望每个人都禁用它(默认情况下这是真的)。 是否有可能以某种方式强制执行此规则?

我希望以与使用ViewState类似的方式解决此问题 - 在所有新页面继承的基页中以编程方式将EnableViewState设置为false。但似乎没有相应的AutoEventWireup。

2 个答案:

答案 0 :(得分:3)

覆盖 SupportAutoEvents

public class BasePage : System.Web.UI.Page
{
    public BasePage()
    {
        this.Init += (_o, _e) => {
            this.Load += (o, e) => {
                Response.Write("in page handler");
            };
        };
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        // this handler is NOT assigned to the Load event
        Response.Write("assigned by ASP .Net handler");            
    }
    protected sealed override bool SupportAutoEvents
    {
        get
        {
            return false;
        }
    }
}

答案 1 :(得分:0)

为要禁用这些属性的每个开箱即创建自己的控件集。然后将继承版本中的两个控件设置为readonly。