2016-04-18 10 views
0

У меня есть панель на моем веб-форму, в этой панели у меня есть много вещей вместе суправления типа «HtmlEditorExtender» должны быть помещены внутри тега формы с RunAt = сервер

Кнопка Нажмите

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> 
+0

Я вижу, что у вас есть главная страница, можете ли вы подтвердить, что 'ContentPlaceHolder' находится внутри'

'на вашей главной странице? – Bikee

+0

У меня есть главная страница на главной странице, у самой главной главной страницы есть скрипт-менеджер, который хорошо находится внутри '' – Arbaaz

ответ

0

Затем вам нужно использовать ScriptManagerProxy на любых вложенных мастер-страниц или страниц.

Класс ScriptManagerProxy позволяет вложенным компонентам, таким как страницы контента и пользовательские элементы управления, добавлять ссылки на скрипт и службу на страницы, когда элемент управления ScriptManager уже определен в родительском элементе.

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

Проверить это link для справки класса ScriptmanagerProxy

UPDATE

В дополнение к этому, вы должны переопределить VerifyRenderingInServerForm

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

+0

Я добавил 'ScriptManagerProxy' на мою страницу, то же самое. – Arbaaz

+0

На самой главной главной странице должен быть ScriptManager, а на других основных страницах/страницах содержимого должен быть ScriptManagerProxy. Вы все это сделали? – Bikee

+0

сейчас самая главная главная страница имеет scripmanager, у дочерней главной страницы есть прокси-скрипт-менеджер, страница, использующая эту главную главную страницу, также имеет прокси-Scriptmanager. Тот же вопрос. :( – Arbaaz