日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在Init之前究竟执行了什么?

發布時間:2025/3/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Init之前究竟执行了什么? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我認為:會實例化子控件并且把他們加入控件樹
上面代碼的注釋說,控件會在加入控件樹之前被初始化,因此我們要保證Page不為Null。
我認為:在根據聲明語法生成控件樹的過程中,執行到此步驟時,控件樹已經生成了一部分,即Page在此時不可能為Null,因此不用判斷Null。可是跟蹤發現Page確實是Null,原因可能是,控件樹已經部分生成,Page已經生成。但在此時子控件是不能訪問Page的,所以才會是Null。
下面是編譯源:
?private?System.Web.UI.Control?__BuildControlForm1()?{
???????????????System.Web.UI.HtmlControls.HtmlForm?__ctrl;?????????
???????????????__ctrl?
=?new?System.Web.UI.HtmlControls.HtmlForm();??????????????
???????????????
this.Form1?=?__ctrl;?????????????
???????????????__ctrl.ID?
=?"Form1";???????????
???????????????__ctrl.Method?
=?"post";??????????????
???????????????System.Web.UI.IParserAccessor?__parser?
=?((System.Web.UI.IParserAccessor)(__ctrl));??????????????
???????????????__parser.AddParsedSubObject(
new?System.Web.UI.LiteralControl("\r\n\t\t\t"));??????????????
???????????????
this.__BuildControlPageTracker3();??????????????
???????????????__parser.AddParsedSubObject(
this.PageTracker3);?????????????????????????????
???????????????__parser.AddParsedSubObject(
new?System.Web.UI.LiteralControl("\r\n\t\t\t\t"));????????????
???????????????
this.__BuildControlButton1();?????????????
???????????????__parser.AddParsedSubObject(
this.Button1);?????????????
???????????????__parser.AddParsedSubObject(
new?System.Web.UI.LiteralControl("\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\t"));??????????????
???????????????
return?__ctrl;
???????????}

???????????
???????????
private?void?__BuildControlTree(System.Web.UI.Control?__ctrl)?{
???????????????System.Web.UI.IParserAccessor?__parser?
=?((System.Web.UI.IParserAccessor)(__ctrl));????????????
???????????????__parser.AddParsedSubObject(
this.CreateResourceBasedLiteralControl(0,?377,?true));????????????
???????????????__parser.AddParsedSubObject(
new?System.Web.UI.LiteralControl("\r\n\t</HEAD>\r\n\t<body>\r\n\t\t"));???????????
???????????????
this.__BuildControlForm1();?????????????
???????????????__parser.AddParsedSubObject(
this.Form1);??????????????
???????????????__parser.AddParsedSubObject(
new?System.Web.UI.LiteralControl("\r\n\t</body>\r\n</HTML>\r\n"));??????????????
???????????}

???????????
???????????
protected?override?void?FrameworkInitialize()?{
???????????????SetStringResourcePointer(ASP.WebForm1_aspx.__stringResource,?
377);
???????????????
this.__BuildControlTree(this);
???????????????
this.FileDependencies?=?ASP.WebForm1_aspx.__fileDependencies;
???????????????
this.EnableViewStateMac?=?true;
???????????????
this.Request.ValidateInput();
???????????}

?

protected?virtual?void?AddParsedSubObject(object?obj)
{
??????Control?control1?
=?obj?as?Control;
??????
if?(control1?!=?null)
??????
{
????????????
this.Controls.Add(control1);
??????}

}


?

可以看到在執行Init前,會編譯運行上面自動生成的編譯源,這樣以來第一個問題就徹底清楚了,也證明我上面的判斷是正確的。

總結

以上是生活随笔為你收集整理的在Init之前究竟执行了什么?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。