【问题标题】:Using AjaxControlToolkit Accordion control in User control that dynamically added to page in asp.net在 asp.net 中动态添加到页面的用户控件中使用 AjaxControlToolkit Accordion 控件
【发布时间】:2013-01-30 00:49:57
【问题描述】:

您好,我正在尝试在用户控件中使用 AjaxControlToolkit 的 Accordion 控件。该用户控件是从后面的代码动态添加到页面的。我的用户控制代码如下:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyControl.ascx.cs" 
Inherits="Project.UC.Control" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"
TagPrefix="asp" %>

<asp:Accordion ID="Accordion1" runat="server" HeaderSelectedCssClass="Sel" 
HeaderCssClass="unSel" SelectedIndex="0">
<Panes>
<asp:AccordionPane runat="server" ID="AccordionPane1">  
<Header>Red Orchid</Header>  
<Content>Some content here.</Content>  
</asp:AccordionPane>  
</Panes>
</asp:Accordion>

为了动态添加用户控件,我在页面后面的代码中使用了以下代码

Control mycontrol = this.LoadControl("~/myUserControl.ascx");
this.Controls.Add(mycontrol);

在我的用户控件消费者页面上,我有带有 runat="server" 的表单标签,还为 ajax 功能添加了 ScriptManager 控件。当我运行我的代码时,我收到以下错误

Control 'ctl02_Accordion1_AccordionExtender' of type 
'AccordionExtender' must be placed inside a form tag with runat=server. 

我已经在我的消费者页面上使用了带有 runat="server" 标记的表单,为什么会出现这个问题。为了解决这个问题,我将消费者页面的表单标签移动到用户控件,这解决了我的问题,但这样做我无法利用消费者页面上的回发。如果我将带有 runat="server" 的表单标签放在用户控件和消费者页面中,则会显示错误,您只能在页面上使用一个表单标签。如何解决这个问题。

提前谢谢..

【问题讨论】:

    标签: asp.net user-controls ajaxcontroltoolkit


    【解决方案1】:

    PlaceHolder 控件添加到表单上,而不是this.Controls.Add(mycontrol); 使用PlaceHolder1.Controls.Add(mycontrol);

    或者您需要向表单的Controls 集合添加控件。假设表单有aspnetForm id,你应该写:aspnetForm.Controls.Add(mycontrol);

    原因是Page 类有自己的Controls 属性,因此this.Controls.Add(mycontrol); 行将控件添加到Page.Controls 集合。但是所有向服务器提交任何数据的控件都必须放在form 元素中,否则它们的值不应在服务器端访问。这来自成熟的 html 表单:HTML Forms and Input

    【讨论】:

    • 您好,感谢您的回复。放置占位符或面板并向其添加用户控件解决了我的问题,但您仍然可以解释为什么将用户控件添加到占位符或面板获取表单标签并将用户控件添加到页面控件集合没有获取表单标签并显示错误?跨度>
    猜你喜欢
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多