类型 'HtmlEditorExtender' 的控件必须放置在具有 runat=server 的表单标记内



我的webform上有一个面板,在这个面板中我有很多东西和

按钮点击

protected void btntopdf_Click(object sender, EventArgs e)
        {

            AjaxControlToolkit.HtmlEditorExtender extender = (AjaxControlToolkit.HtmlEditorExtender)Panel1.FindControl("HtmlEditorExtender1");
            Panel1.Controls.Remove(extender);
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            StringWriter sw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(sw);
            Panel1.RenderControl(hw); // error over here
            StringReader sr = new StringReader(sw.ToString());
            Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
            HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
            PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
            pdfDoc.Open();
            htmlparser.Parse(sr);
            pdfDoc.Close();
            Response.Write(pdfDoc);
            Response.End();
        }

错误:

Control 'ContentPlaceHolder1_ContentPlaceHolder1_HtmlEditorExtender1' of 
type 'HtmlEditorExtender' must be placed inside a form tag with runat=server.

Webform:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

    <asp:Panel ID="Panel1" runat="server">
  //lot of stuff in between
<ajaxToolkit:HtmlEditorExtender ID="HtmlEditorExtender1" runat="server" TargetControlID="txtkeyresultforyear"
                            EnableSanitization="false">
                        </ajaxToolkit:HtmlEditorExtender>
  //lot of stuff in between
</asp:Panel>
</asp:Content>

然后,您需要在任何嵌套的母版页或内容页上使用ScriptManagerProxy

ScriptManagerProxy类使嵌套组件(如内容页面和用户控件)能够在父元素中已经定义ScriptManager控件时向页面添加脚本和服务引用

https://msdn.microsoft.com/en-us/library/cc295370.aspx

检查此链接以获取ScriptmanagerProxy类引用

更新

除此之外,您还需要覆盖VerifyRenderingInServerForm

https://msdn.microsoft.com/en-us/library/system.web.ui.page.verifyrenderinginserverform.aspx

最新更新