2010-03-24 41 views
1

我最近將一個Telerik控件添加到包含在aspx頁面中的ascx中。此頁面有一個「發送電子郵件」按鈕,單擊該按鈕會向用戶發送頁面呈現的輸出。我添加的Telerik控件需要一個ScriptManager,所以我將它添加到了ascx中。但是,現在電子郵件按鈕不起作用。我收到以下錯誤:嘗試通過電子郵件呈現ASP.NET頁面的呈現內容時ScriptManager出現問題

ID爲'myIdHere'的控件需要頁面上的ScriptManager。 ScriptManager必須出現在任何需要它的控件之前。

我知道腳本管理器的存在,因爲當我去那個url時頁面可以正常工作,它只是在它試圖通過電子郵件呈現輸出時失敗。

這裏有一段代碼,關於在執行這類事情時scriptmanager是否存在問題的任何想法?

Page EmailPage = new EmailBasePage(); 
System.Web.UI.HtmlControls.HtmlForm EmailForm = new System.Web.UI.HtmlControls.HtmlForm(); 
EmailPage.Controls.Add(EmailForm); 
EmailForm.Controls.Add(contentTable); //this is the container with all the controls I want to email 

StringBuilder SB = new StringBuilder(); 
StringWriter html = new StringWriter(SB); 
HtmlTextWriter mhtmlWriter = new HtmlTextWriter(html); 

EmailPage.DesignerInitialize(); 
EmailPage.RenderControl(mhtmlWriter); 
mhtmlWriter.Close(); 

更新 在錯誤消息中引用的控制 「myIdHere」 是Telerik的radcombobox控件控制需要一個ScriptManager。它是添加到EmailForm的contentTable控件的子控件。控制層次是這樣的:

contentTable 
|__UserControl1 
    |__ScriptManager1 
    |__UserControl2 
     |__Control "myIdHere", a Telerik RadComboBox requiring a ScriptManager 
+0

「myIdHere」是什麼樣的控件?它在contentTable容器中嗎?如果是,那麼在contentTable容器中是否有腳本管理器? – lingvomir

回答

2

如果您確信該頁面輸出包含ASP.NET AJAX腳本(通過ScriptManager控件呈現),那麼你可以通過設置

myIdHere.RegisterWithScriptManager = false; 
刪除服務器異常

這將刪除服務器上的腳本管理器控件的組合框依賴項。請注意,控件仍然需要瀏覽器中的ASP.NET AJAX客戶端腳本,這就是爲什麼您需要確保首先在頁面上存在ScriptManager的原因。

+0

這樣做的竅門,謝謝! – jubil