在MasterPage中输出某个控件的Html文本时出现“类型“XX”的控件“XX”必须放在具有 runat=server 的窗体标记内”问题的解决
2007-09-03 21:48
567 查看
出现错误代码
Master.Master---------------------------------------------------------------------------------------------
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="master.master.cs"
Inherits="master_master" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>测试</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>
InMasterPage.aspx---------------------------------------------------------------------------------------
<%@ Page Language="C#" MasterPageFile="~/master/master.master" AutoEventWireup="true"
CodeFile="Order.aspx.cs" Inherits="InMasterPage_Order" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr align="left" valign="top">
<td style="width: 40%;">
<asp:SqlDataSource ID="SqlDataSourceTicketInfo" runat="server" ConnectionString="<%$ ConnectionStrings:YinYeTravelConnectionString %>"
SelectCommand=" * WHERE ([OperationID] = @OperationID)">
<SelectParameters>
<asp:QueryStringParameter Name="OperationID" QueryStringField="ID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<div id="OrderInfo" runat="server">
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" BackColor="White"
BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" CellPadding="4"
DataKeyNames="OperationID" DataSourceID="SqlDataSourceTicketInfo" GridLines="Horizontal"
HeaderText="**" HorizontalAlign="Center" Width="300px">
<FooterStyle BackColor="White" ForeColor="#333333" />
<EditRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="White" ForeColor="#333333" />
<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
<Fields>
<asp:BoundField DataField="OperationID" HeaderText="OperationID" InsertVisible="False"
ReadOnly="True" SortExpression="OperationID" />
<asp:BoundField [其他绑定,这里略] />
</Fields>
<HeaderStyle BackColor="#00C000" Font-Bold="True" ForeColor="White" />
</asp:DetailsView>
</div>
</td>
<td style="width: 60%;">
</td>
</tr>
</table>
</asp:Content>
InMasterPage.aspx.cs-------------------------------------------------------------------------------
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
DetailsView1.RenderControl(htw);
这时错误提示“类型“XX”的控件“XX”必须放在具有 runat=server 的窗体标记内”
以前也遇到过这样的问题,大概是因为我的控件不再Form标签内。可是这个在啊。
呵呵,说不清楚了。
于是,找了找Msdn看看是哪个方法在报错,最后找到了VerifyRenderingInServerForm方法。还好,此方法支持重写,于是抱着试试看的态度在页面里面加入了
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
测试通过。不知道这个是因为什么原因。
好似没有什么道理似的,不过暂时只能这么处理。以后有空再追究吧!
Master.Master---------------------------------------------------------------------------------------------
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="master.master.cs"
Inherits="master_master" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>测试</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>
InMasterPage.aspx---------------------------------------------------------------------------------------
<%@ Page Language="C#" MasterPageFile="~/master/master.master" AutoEventWireup="true"
CodeFile="Order.aspx.cs" Inherits="InMasterPage_Order" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr align="left" valign="top">
<td style="width: 40%;">
<asp:SqlDataSource ID="SqlDataSourceTicketInfo" runat="server" ConnectionString="<%$ ConnectionStrings:YinYeTravelConnectionString %>"
SelectCommand=" * WHERE ([OperationID] = @OperationID)">
<SelectParameters>
<asp:QueryStringParameter Name="OperationID" QueryStringField="ID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<div id="OrderInfo" runat="server">
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" BackColor="White"
BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" CellPadding="4"
DataKeyNames="OperationID" DataSourceID="SqlDataSourceTicketInfo" GridLines="Horizontal"
HeaderText="**" HorizontalAlign="Center" Width="300px">
<FooterStyle BackColor="White" ForeColor="#333333" />
<EditRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="White" ForeColor="#333333" />
<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
<Fields>
<asp:BoundField DataField="OperationID" HeaderText="OperationID" InsertVisible="False"
ReadOnly="True" SortExpression="OperationID" />
<asp:BoundField [其他绑定,这里略] />
</Fields>
<HeaderStyle BackColor="#00C000" Font-Bold="True" ForeColor="White" />
</asp:DetailsView>
</div>
</td>
<td style="width: 60%;">
</td>
</tr>
</table>
</asp:Content>
InMasterPage.aspx.cs-------------------------------------------------------------------------------
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
DetailsView1.RenderControl(htw);
这时错误提示“类型“XX”的控件“XX”必须放在具有 runat=server 的窗体标记内”
以前也遇到过这样的问题,大概是因为我的控件不再Form标签内。可是这个在啊。
呵呵,说不清楚了。
于是,找了找Msdn看看是哪个方法在报错,最后找到了VerifyRenderingInServerForm方法。还好,此方法支持重写,于是抱着试试看的态度在页面里面加入了
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
测试通过。不知道这个是因为什么原因。
好似没有什么道理似的,不过暂时只能这么处理。以后有空再追究吧!
相关文章推荐
- 类型“GridView”的控件 必须放在具有 runat=server 的窗体标记内 错误的解决方法
- 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内的解决办法。
- 类型“GridView”的控件 必须放在具有 runat=server 的窗体标记内 错误的解决方法
- asp.net 导出excel时报类型“DataGridLinkButton”的控件“dgExcel__ctl1__ctl0”必须放在具有 runat=server 的窗体标记内 解决方法
- 关于类型“LinkButton”的控件“xxx”必须放在具有 runat=server 的窗体标记内问题的解决方案
- 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内的解决办法。
- “类型“TextBox”的控件“FullName”必须放在具有 runat=server 的窗体标记内”的解决办法
- 解决类型“GridView”的控件 必须放在具有 runat=server 的窗体标记内 错误的解决方法
- 错误:类型“GridView”的控件必须放在具有 runat=server 的窗体标记内
- .net 错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
- asp.net关于控件运行返回错误:必须放在具有 runat=server 的窗体标记内,解决办法。
- 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常
- “类型“GridView”的控件 必须放在具有 runat=server 的窗体标记内
- 类型“DataGridLinkButton”的控件“DataGrid1__ctl2__ctl0”必须放在具有 runat=server 的窗体标记内。
- "控件必须放在具有 runat=server 的窗体标记内"错误的解决方法
- 错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 .
- 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
- 类型“ScriptManager”的控件“ScriptManager1”必须放在具有 runat=server 的窗体标记内。
- 错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内
- 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常