2010-09-09 22 views
7

Im chạy một dự án ASP.NET 4.0.Page_PreBạn không được gọi?

Trang .aspx có AutoEventWireup="true" đặt trong tiêu đề.

Mặc dù OnPreInit được gọi, Page_PreInit không? Bất cứ ai có thể đề nghị những gì là sai?

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    Response.Write("bar"); 
} 

protected override void OnPreInit(EventArgs e) 
{ 
    Response.Write("foo"); 
    base.OnPreInit(e); 
} 
+0

Cú pháp của bạn có vẻ ổn. Điều này có được xác định trong MasterPage không? – Sauleil

+2

Tôi không thể tạo lại vấn đề bạn đã mô tả. AutoEventWireup có được xác định trong trang chính không? –

+0

Hoặc bạn đang kế thừa trang? – JBrooks

Trả lời

1

Sự kiện Page_PreInit làm lửa, bạn có thể thấy điều này, nếu bạn đặt một breakpoint vào lúc bắt đầu của sự kiện và bước qua nó ở thời gian chạy. Lý do chuỗi "thanh" không được ghi vào màn hình là vì nó bị ghi đè bởi OnPreInitEvent.

Vui lòng xem mã bên dưới. Bước qua nó và bạn sẽ thấy cách nó đi vào Page_PreInit và sau đó bị ghi đè trong OnPreInitEvent. Nếu bạn nhận xét sự kiện ENTIRE OnPreInit, bạn sẽ thấy "Page_PreInit" được ghi vào màn hình.

using System; 

public partial class _Default : System.Web.UI.Page 
{ 
    string eventName = String.Empty; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Write(eventName); 
    } 

    protected void Page_PreInit(object sender, EventArgs e) 
    { 
     eventName = "Page_PreInit"; 
    } 

    protected override void OnPreInit(EventArgs e) 
    { 
     base.OnPreInit(e); 
     eventName = "OnPreInit"; 
    } 
} 
Các vấn đề liên quan