问题描述
|
protected void Page_Load(object sender,EventArgs e)
{
Button b = new Button();
b.Text = \"1\";
this.Controls.Add(b);
}
子页面开始如下:
<asp:Content ID=\"Content2\" ContentPlaceHolderID=\"ContentPlaceHolder2\" Runat=\"Server\"/>
母版页
<div align=\"center\" runat=\"server\" >
<form id=\"form1\" runat=\"server\">
<asp:ContentPlaceHolder id=\"ContentPlaceHolder2\" runat=\"server\">
</asp:ContentPlaceHolder>
</form>
</div>
如此处所示,按钮控件位于内部
那么,为什么我得到这个:
http:// localhost:2427 / WebSite10 / AllQuestions.aspx
Control \'ctl01\' of type \'Button\' must be placed inside a form tag with runat=server.
说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。
异常详细信息:System.Web.HttpException:类型为'Button \'的控件\'ctl01 \'必须放置在带有runat = server的表单标记中。
解决方法
这些行上的东西应该起作用,这将有助于呈现控件
Button b = new Button();
b.Text = \"Click Me\";
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
b.RenderControl(hw);
Response.Write(hw.InnerWriter);
或者您也可以通过PlaceHolder
<asp:PlaceHolder ID=\"holder1\" runat=\"server\"></asp:PlaceHolder>
Button b = new Button();
b.Text = \"Click Me\";
holder1.Controls.Add(b);
, 尝试将它qdd到contentplaceholder而不是页面本身