c# - GridView 必须放置在带有 runat ="server"的表单标签内,即使在 GridView 位于表单标签内之后也是如此

标签 c# .net asp.net

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

代码隐藏:

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

即使 GridView 位于带有 runat="server"的 from 标记内,我仍然收到此错误。

有什么线索吗?

最佳答案

您正在调用 GridView.RenderControl(htmlTextWriter),因此该页面引发了一个异常,即 Server-Control 在 Form 外部呈现。

您可以通过覆盖 VerifyRenderingInServerForm 来避免此异常

public override void VerifyRenderingInServerForm(Control control)
{
  /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
     server control at run time. */
}

参见 herehere .

关于c# - GridView 必须放置在带有 runat ="server"的表单标签内,即使在 GridView 位于表单标签内之后也是如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6343630/

相关文章:

c# - Silverlight 4 中的排序集合类?

c# - 字符串比较 == 是否仅因为字符串不可变才起作用?

.net - 可变间隔定时器

asp.net - 偏移/限制性能优化

c# - 如何在严格的层级架构中拆分各层并提升模块化而又不引起不必要的冗余?

c# - 从通用类型加载通用集合

c# - 更改 TreeView 的节点

c# - list.where 的编译错误

asp.net 更新面板无法正常工作

ASP.NET MVC 3 EF CodeFirst - DBContext 项编辑