重载VerifyRenderingInServerForm
Page. VerifyRenderingInServerForm 方法
確認在運行時為指定的 ASP.NET 服務器控件呈現 HtmlForm 控件
[C#]
public virtual voidVerifyRenderingInServerForm(
?? Controlcontrol
);
參數
control
ASP.NET 服務器控件,它必須位于 HTMLForm 控件中。
異常
異常類型 HttpException
條件?
指定的服務器控件在運行時不包含在 HtmlForm 服務器控件的開始和結束標記之間。
備注
如果該頁當前不處于頁處理中的呈現階段,且位于 <form runat=server> 標記內,則該方法將引發異常。需要位于服務器窗體內的控件可以在呈現期間調用該方法,以便在它們被放置到外面時顯示明確的錯誤信息。發送回或依賴于注冊的 腳本塊的控件應該在 Control.Render 方法的重寫中調用該方法。呈現服務器窗體元素的方式不同的頁可以重寫該方法以在不同的條件下引發異常。
如果回送或使用客戶端腳本的服務器控件沒有包含在 HtmlForm 服務器控件 (<form runat="server">) 中,它們將無法正常工作。這些控件可以在呈現時調用該方法,以在它們沒有包含在 HtmlForm 控件中時提供明確的錯誤信息。
開發自定義服務器控件時,通常在為任何類型的輸入標記重寫 Render 方法時調用該方法。這在輸入控件調用 GetPostBackEventReference 或發出客戶端腳本時尤其重要。復合服務器控件不需要作出此調用。
除非要創建替換頁框架,否則請不要重寫此方法。
重載VerifyRenderingInServerForm,然后讓它什么也不做。
public override void VerifyRenderingInServerForm(Control control)
??????? {
??????????? //base.VerifyRenderingInServerForm (control);
??????? }
跟蹤了一下,發現頁面的每個服務器端控件都會執行這個方法,結合我自己的實際情況,做了點小修改
public override void VerifyRenderingInServerForm(Control control)
??????? {
??????????? if (!control.GetType().Name.Equals("DataGridLinkButton"))
??????????? {
??????????????? base.VerifyRenderingInServerForm (control);
??????????? }
??????? }
因為我需要獲得一個控件的HTML輸出到畫面上,而這個控件是我new出來的,顯然不可能在<form runat=server> 標記內,于是我就加了個判斷,雖然還是沒有做到十全十美(就是如果畫面上本來就有的DataGridLinkButton也不做驗證了。)但感覺比起直接 把base方法調用注釋掉還是合情合理些。
總結
以上是生活随笔為你收集整理的重载VerifyRenderingInServerForm的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行走时容易撞到墙上或门框上是怎么了?
- 下一篇: 在GridView中使用Cache