2013-04-15 106 views
0

我想通過單擊按鈕(使用Control.Render)將嚮導控件呈現爲HTML字符串。我已經使用以下功能禁用事件驗證,這很好,並使我能夠將整個字符串渲染爲字符串。我這樣做,它包含嚮導的用戶控件中:繞過Page.VerifyRenderingInServerForm

protected void Page_Init(object sender, EventArgs e) 
{ 
    if (Request.Form["__EVENTTARGET"] != null 
     && Request.Form["__EVENTTARGET"] == btnPrint.ClientID.Replace("_", "$")) 
    { 
     Page.EnableEventValidation = false; 
    } 
} 

雖然這個作品,我想使自身的嚮導控制。我知道我可以爲了阻止該網頁拋出異常覆蓋Page.VerifyRenderingInServerForm當我試圖使自身(不runat="server"表單標籤)這種控制,像這樣:

public override void VerifyRenderingInServerForm(Control control) 
{ 
    // base.VerifyRenderingInServerForm(control); 
} 

不過,我不知道想完全覆蓋它。有沒有一種方法,我可以動態地繞過這一點,無論是:

  • 對於所討論的按鈕被點擊具體的回傳,或...
  • 專門爲嚮導控制?

回答

1

如何像:

public override void VerifyRenderingInServerForm(Control control) 
{ 
    if (!SkipVerifyRenderingInServerForm) 
    { 
     base.VerifyRenderingInServerForm(control); 
    } 
} 

public bool SkipVerifyRenderingInServerForm 
{ 
    get 
    { 
     object o = HttpContext.Current.Items["SkipVerifyRenderingInServerForm"]; 
     return (o == null) ? false : (bool) o; 
    } 
    set 
    { 
     HttpContext.Current.Items["SkipVerifyRenderingInServerForm"] = value; 
    } 
} 

然後,您可以在您的按鈕單擊事件處理程序中設置SkipVerifyRenderingInServerFormtrue