<form runat="server" id="f1">     <div runat="server" id="d">         grid view:         <asp:GridView runat="server" ID="g">         </asp:GridView>     </div>      <asp:TextBox runat="server" ID="t" TextMode="MultiLine" Rows="20" Columns="50"></asp:TextBox> </form> Code behind:
public partial class ScriptTest : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {         g.DataSource = new string[] { "a", "b", "c" };         g.DataBind();          TextWriter tw = new StringWriter();         HtmlTextWriter h = new HtmlTextWriter(tw);             d.RenderControl(h);         t.Text = tw.ToString();     } } Even the GridView is within a from tag with runat="server", still I am getting this error.
Any clues please ?
You are calling GridView.RenderControl(htmlTextWriter), hence the page raises an exception that a Server-Control was rendered outside of a Form. 
You could avoid this execption by overriding VerifyRenderingInServerForm
public override void VerifyRenderingInServerForm(Control control) {   /* Confirms that an HtmlForm control is rendered for the specified ASP.NET      server control at run time. */ } See here and here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With