简体   繁体   中英

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

I have have a panel on my webform, within this panel i have lots of stuff along with

Button Click

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();
        }

ERROR:

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>

Then, you need to use the ScriptManagerProxy on any nested master pages or content pages.

ScriptManagerProxy class enables nested components such as content pages and user controls to add script and service references to pages when a ScriptManager control is already defined in a parent element.

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

Check this link for ScriptmanagerProxy class reference

UPDATE

In addition to that, you need to override VerifyRenderingInServerForm

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM