我有很多UserControls
,我想在一个query string
页面中依赖aspx
加载它们。
我厌倦了两种方式:
在Placeholder
页面和aspx
事件中添加Page_Load/Page_Render
:
UserControl uc = (UserControl)LoadControl("/PATH/ProductGroups.ascx");
phMain.Controls.Add(uc);
添加MasterPage
,然后添加aspx
并使用主页,然后在UserControl
aspx
醇>
但两者都有以下错误:
The control collection cannot be modified during DataBind, Init, Load, PreRender or Unload phases.
顺便说一句,我在加载的telerik TextEditor
中使用了UserControl
。
我该如何处理?
我认为我拥有的唯一方式是aspx
每个UserContorl
,而不是MasterPage
,这很糟糕,如你所知!因为我必须在所有页面中逐个修复HTML/CSS/JS
,这不是专业的!
注意:不使用telerik TextEditor
,一切正常,但我需要这个,这个wat(在UserControl
中加载PlaceHolder
)并不是一个好方法。
我正在寻找像DNN这样的东西。
答案 0 :(得分:1)
我试图复制这个错误,但我不能。它对我来说很好。这是我在VS2013中尝试过的。
1)添加了MasterPage
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="Test.Site1" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<telerik:RadScriptManager ID="RadScriptManager1" runat="server"></telerik:RadScriptManager>
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
2)添加了WebUserControl
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="Test.WebUserControl1" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<telerik:RadEditor runat="server" ID="RadEditor1" SkinID="DefaultSetOfTools" Height="675px">
</telerik:RadEditor>
3)添加了WebForm
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="Test.WebForm3" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:PlaceHolder runat="server" ID="phMain" />
</asp:Content>
4)加载控件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Test
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
UserControl uc = (UserControl)LoadControl("~/WebUserControl1.ascx");
phMain.Controls.Add(uc);
}
}
}
Here是错误的解决方法&#34;无法修改控件集合&#34;