您的位置:首页 > Web前端 > HTML

在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);

}

测试通过。不知道这个是因为什么原因。

好似没有什么道理似的,不过暂时只能这么处理。以后有空再追究吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐