ContentPlaceHolder必须放在具有 runat=server 的窗体标记内

本文探讨了在ASP.NET应用程序中使用GridView控件导出数据到Excel时遇到的一个常见异常——GridView控件必须置于带有runat=server属性的窗体标记内。文中详细介绍了异常背景及解决方法,并提供了一段示例代码来展示如何正确地处理此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类型“GridView”的控件“ctl00_contentBody_gridView4Export”必须放在具有 runat=server 的窗体标记内。

 页面是从母版页继承的,而gridview所在的ContentPlaceHolder确定是放在form中的。

以前只有控件未放在form中才会抛出同类异常。

 1 protected void btExport_Click(object sender, EventArgs e)
 2     {
 3         // get dataset
 4         SRMReportService.ReportService srv = ServiceFactory.ReportService();
 5         DataSet ds = srv.QueryAllData_Vendor_CheckAmount_Summary(
 6             (string)this.ViewState["PlantCode"],
 7             (string)this.ViewState["PeriodCode"],
 8             (string)this.ViewState["VendorCode"]);
 9 
10         // bind to gridview
11         this.gridView4Export.DataSource = ds;
12         this.gridView4Export.DataBind();
13 
14         // export
15         this.ExportToExcel(this.gridView4Export);
16     }
17 
18 
19 
20 
21     public void ExportToExcel(System.Web.UI.Control ctl)
22     {
23 
24         Response.AppendHeader("Content-Disposition"
25             "attachment;filename=Excel.xls");
26         Response.ContentEncoding = 
27             System.Text.Encoding.GetEncoding("GB2312");
28         Response.ContentType = "application/ms-excel";
29         
30         System.Globalization.CultureInfo myCItrad = 
31             new System.Globalization.CultureInfo("ZH-CN"true);
32         System.IO.StringWriter tw = 
33             new System.IO.StringWriter(myCItrad);
34         try
35         {
36             System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);
37             ctl.RenderControl(hw);
38             Response.Write(tw.ToString());
39             Response.End();
40         }
41         finally
42         {
43             tw.Close();
44         }
45     }
46 

在您的codebehind文件中,继承自page基类的那个页面类中复制如下代码进去:
    public override void VerifyRenderingInServerForm(Control control)
    {
        // Confirms that an HtmlForm control is rendered for
    }

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPageAdmin.master.cs" Inherits="Admin_MasterPageAdmin" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <asp:ContentPlaceHolder id="head" runat="server"> </asp:ContentPlaceHolder> <link href="admin.css" rel="stylesheet" /> </head> <body> <form id="form1" runat="server"> <div id="page"> <div id="banner"> <asp:Image ID="Image1" runat="server" Height="628px" ImageUrl="~/images/banner.png" Width="1650px" Style="margin-left: 0px"/> </div> <div id="menu"> <asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" RenderingMode="Table" Width="1650px" BackColor="Silver" BorderColor="#999999" ForeColor="Black"> <Items> <asp:MenuItem NavigateUrl="~/Admin/AdminChangePwd.aspx" Text="修改密码" Value="修改密码"></asp:MenuItem> <asp:MenuItem NavigateUrl="~/Admin/AdminAddMusic.aspx" Text="上传音乐" Value="上传音乐"></asp:MenuItem> <asp:MenuItem NavigateUrl="~/Admin/ManageUsers.aspx" Text="管理用户" Value="管理用户"></asp:MenuItem> <asp:MenuItem NavigateUrl="~/Admin/ManageAdminMusic.aspx" Text="编辑音乐" Value="编辑音乐"></asp:MenuItem> <asp:MenuItem NavigateUrl="~/Logout.aspx" Text="注销" Value="注销"></asp:MenuItem> </Items> </asp:Menu> </div> <div> <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> <div id="foot"> Copyright @ 2024 - 2025 Klein Music.All Rights Reserved </div> </div> </form> </body> </html> 编写css
最新发布
06-17
<%@ Page Language="C#" MasterPageFile="~/master.master" AutoEventWireup="true" CodeFile="Manager.aspx.cs" Inherits="Manager" Title="My bss" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <div class="page" id="page"> <div id="table" runat=server class="table"> <h2 runat=server id="h2"></h2> <asp:GridView ID="articlelist" runat="server" CellPadding="4" ForeColor="#6C7E4A" GridLines="Horizontal" AllowPaging="True" AutoGenerateColumns="False" Width="100%" OnRowDeleting="articlelist_RowDeleting" > <FooterStyle BackColor="#BCD988" Font-Bold="True" ForeColor="#996600" /> <RowStyle BackColor="#F9F9F9" BorderColor="#BCD988" BorderStyle="Solid" BorderWidth="1px" /> <PagerStyle BackColor="#BCD988" ForeColor="#996600" HorizontalAlign="Left"/> <HeaderStyle BackColor="#BCD988" Font-Bold="True" ForeColor="#996600" HorizontalAlign="Center" VerticalAlign="Middle" /> <AlternatingRowStyle BackColor="White" /> <PagerSettings FirstPageText="首页" LastPageText="尾页" Mode="NextPreviousFirstLast" NextPageText="下一页" PreviousPageText="上一页" /> <Columns> <asp:BoundField DataField="id" HeaderText="文章编号" ReadOnly="True" > <ItemStyle CssClass="hidden" /> <HeaderStyle CssClass="hidden" /> <FooterStyle CssClass="hidden" /> </asp:BoundField> <asp:BoundField DataField="replaynum" HeaderText="回复" /> <asp:BoundField DataField="readnum" HeaderText="阅读" /> <asp:BoundField DataField="title" HeaderText="题目" /> <asp:BoundField DataField="username" HeaderText="作者" /> <asp:BoundField DataField="classname" HeaderText="类别" /> <asp:BoundField DataField="time" HeaderText="发表时间" /> <asp:CommandField HeaderText="管理" ShowDeleteButton="True" /> </Columns> </asp:GridView> </div> <div id="message" runat="server"> <asp:HiddenField ID="classValue" runat="server" /> </div> </div> </asp:Content> 为什么提示我有不是已知元素
06-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值