今儿个,咱来聊聊我在捣鼓*页面时遇到的一个小玩意儿——AutoEventWireup。这名字听着挺唬人,弄明白也就那么回事。
初识AutoEventWireup
我像往常一样写个*页面,然后在后台代码里写Page_Load事件。我寻思着,这页面一加载,Page_Load里的代码就该跑起来,对?结果,它还真就乖乖地跑起来!
后来我手欠,把页面顶上那行<%@ Page ... %>里头的AutoEventWireup="true"给改成"false"。这下Page_Load直接罢工,不干活!我当时就懵,这是咋回事?
深究AutoEventWireup
为弄明白这AutoEventWireup到底是何方神圣,我赶紧去查资料。原来,这玩意儿是*里头的一个小机关,用来自动把页面事件和后台代码里的特定方法给“连”起来。就像搭积木一样,它自动帮你把积木块对不用你一块一块去拼。
这些特定的方法,名字都起好,像啥Page_Init, Page_Load, Page_DataBind之类的。只要你把AutoEventWireup设成"true",*就自动帮你把这些方法和对应的事件给“连”上。这样,页面一触发这些事件,对应的代码就自动跑起来,省事儿!
手动“连线”
那如果我把AutoEventWireup设成"false"?那你就得自己动手,把事件和方法给“连”起来。咋“连”?
也不难。比如说,你想把Page_PreInit事件和你的方法连起来,你就在后台代码里这么写:
protected override void OnInit(EventArgs e)
* += new EventHandler(Page_PreInit);

*(e);
瞧见没,就是这么简单。你得先重写OnInit方法,然后用"+="把你的方法(这里是Page_PreInit)和PreInit事件给“绑”在一起。这样,页面触发PreInit事件的时候,你的Page_PreInit方法就会被调用。
总结
AutoEventWireup这玩意儿,说白就是一个“自动挡”。你把它设成"true",它就自动帮你“挂挡”;你把它设成"false",你就得自己动手“换挡”。
我个人觉得,大多数时候用“自动挡”挺省心省力。但有时候,你可能想更精细地控制事件的“连接”,或者想搞点儿花活,那就得自己动手,“手动挡”走起!
好,今儿个就分享到这儿。希望我这番啰嗦,能帮大伙儿把AutoEventWireup这小玩意儿给弄明白。下次再遇到它,咱就不怵!