错误:-Extender控件可能未在PreRender之前注册. [英] Error :-Extender controls may not be registered before PreRender.
问题描述
我已经使用Ajax calenderExtender创建了一个Web用户控件.
我想在页面上动态加载此控件,以便用户可以通过单击链接按钮根据需要创建更多控件.
控件第一次加载,但是在回发时会发生错误:在PreRender之前可能未注册扩展控件"
WebUserControl.ascx的代码段:
I have created a web user control, using Ajax calenderExtender.
I want to load this control dynamically, on a page so that the user can create more controls as he wants by clicking on the link button.
The controls load first time, but on postback, the error occurs : "Extender controls may not be registered before PreRender"
Code Snippet For WebUserControl.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<button runat="server" id="btn">SelectDate</button>
<ajax:CalendarExtender TargetControlID="TextBox1" PopupButtonID="btn" Animated="true" runat="server" PopupPosition="Right" ID="calenderExtender">
</ajax:CalendarExtender>
<ajax:ToolkitScriptManager runat="server" LoadScriptsBeforeUI="true" EnablePartialRendering="true" ID="scriptmanager"></ajax:ToolkitScriptManager></pre></code>
<b>Code Snippet For Default.aspx</b>:
<code><pre lang="xml"><%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Src="~/WebUserControl.ascx" TagPrefix="UC" TagName="Ucontrol" %>
<!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:PlaceHolder ID="placeholder" runat="server"></asp:PlaceHolder>
<asp:Panel ID="panel" runat="server"></asp:Panel>
</form>
</body>
</html>
Default.aspx.cs的代码段
Code Snippet For Default.aspx.cs
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Control c = this.LoadControl("WebUserControl.ascx");
Panel pan1 = new Panel();
pan1.Controls.Add(c);
placeholder.Controls.Add(pan1);
Session["controls"] = pan1;
}
else
{
Panel pan = Session["controls"] as Panel;
placeholder.Controls.Add(pan);
}
LinkButton lb = new LinkButton();
lb.Text = "Add more controls";
lb.Click += new EventHandler(lb_Click);
panel.Controls.Add(lb);
}
void lb_Click(object sender, EventArgs e)
{
Control c = this.LoadControl("WebUserControl.ascx");
Panel pan = Session["controls"] as Panel;
pan.Controls.Add(c);
placeholder.Controls.Add(pan);
Session["controls"] = pan;
}
}
[edit]整理出代码块-下次,在自动检测"功能打开的情况下,请勿复制和粘贴太多代码:您翻译了<和>几次! -OriginalGriff [/edit]
[edit]Code blocks sorted out - next time, don''t copy and paste so much with "Auto detect" switched on: you translated < and > several times! - OriginalGriff[/edit]
推荐答案
我认为您不妨尝试一些
I think you may wish to try some of these links.
It is a very good idea to try a google search on the text of an error message because you usually get some good hits on solutions that way.
Cheers.
这篇关于错误:-Extender控件可能未在PreRender之前注册.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!