【问题标题】:Problem with ScriptManager when trying to email rendered contents of ASP.NET page尝试通过电子邮件发送 ASP.NET 页面的呈现内容时 ScriptManager 出现问题
【发布时间】:2010-03-24 20:54:59
【问题描述】:

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

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

我知道脚本管理器存在,因为当我转到该 url 时页面工作正常,它仅在尝试通过电子邮件发送呈现的输出时失败。

这是一个代码sn-p,关于在做这种事情时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

【问题讨论】:

  • “myIdHere”是个什么样的控件?它在 contentTable 容器中吗?如果是,在它之前的 contentTable 容器中是否有脚本管理器?

标签: c# asp.net telerik


【解决方案1】:

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

myIdHere.RegisterWithScriptManager = false;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 2012-11-17
    • 2016-06-09
    • 2020-10-29
    • 2011-10-28
    相关资源
    最近更新 更多