尝试通过电子邮件发送ASP.NET页面的呈现内容时ScriptManager出现问题

时间:2010-03-24 20:54:59

标签: c# asp.net telerik

我最近将一个Telerik控件添加到aspx页面中包含的ascx。此页面有一个“发送电子邮件”按钮,单击该按钮将通过电子邮件向用户发送页面的呈现输出。我添加的Telerik控件需要一个ScriptManager,所以我将其添加到ascx。但是,现在电子邮件按钮将无法使用。我收到以下错误:

ID为“myIdHere”的控件需要页面上的ScriptManager。 ScriptManager必须出现在需要它的任何控件之前。

我知道脚本管理器存在,因为当我去那个网址时页面工作正常,只有在尝试通过电子邮件发送渲染输出时它才会失败。

这是一段代码片段,关于在做这类事情时是否存在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”是需要ScriptManager的Telerik RadComboBox控件。它是添加到EmailForm的contentTable控件的子控件。控制层次结构如下:

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

1 个答案:

答案 0 :(得分:2)

如果您确定页面输出包含ASP.NET AJAX脚本(由ScriptManager控件呈现),那么您可以通过设置

来删除服务器异常
myIdHere.RegisterWithScriptManager = false;

这将删除服务器上脚本管理器控件的组合框依赖性。请注意,控件仍然需要浏览器中的ASP.NET AJAX客户端脚本,这就是为什么您需要首先确保页面上有ScriptManager。