无法修改 Controls 集合,因为控件包含代码块(即 <% ... %> ),动态添加具有 Masterpages 的控件
Posted
技术标签:
【中文标题】无法修改 Controls 集合,因为控件包含代码块(即 <% ... %> ),动态添加具有 Masterpages 的控件【英文标题】:The Controls collection cannot be modified because the control contains code blocks (i.e. <% … %> ) adding the controls dynamically having Masterpages 【发布时间】:2011-08-22 09:52:11 【问题描述】:在动态添加具有母版页的控件时,控件包含代码块(即 ),因此无法修改 Controls 集合
我正在尝试将 HiddenField 控件添加到 aspx 页面。我收到下面提到的错误
无法修改 Controls 集合,因为该控件包含代码块(即 )。
当我必须动态添加控件时会发生这种情况。在网上,我发现所有类型的答案都添加
这是我的代码示例,
HiddenField hndGuid = new HiddenField();
_page.Form.Controls.Add(hndGuid);
任何指针?
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.htmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections.Generic;
namespace wwwroot.Common
public class GuidClass
public GuidClass()
//
// TODO: Add constructor logic here
//
private string guid;
public string Guid
get
return guid;
set
guid = value;
public class Myhandler : System.Web.UI.Page, IHttpModule
Page _page = null;
HiddenField hndGuid = null;
Queue<string> temp;
public Myhandler()
temp=new Queue<string>();
public new void Init(HttpApplication context)
context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
void context_PreRequestHandlerExecute(object sender, EventArgs e)
System.Web.HttpContext _httpContext = System.Web.HttpContext.Current;
if (_httpContext != null)
_page = _httpContext.Handler as System.Web.UI.Page;
if (_page != null)
_page.Init += new EventHandler(_page_Init);
_page.Load += new EventHandler(_page_Load);
hndGuid = new HiddenField();
hndGuid.ID = "hndGuid";
else
return;
else
return;
void _page_Init(object sender, EventArgs e)
_page.Form.Controls.Add(hndGuid);
if (!_page.IsPostBack)
hndGuid.Value = Guid.NewGuid().ToString();
void _page_Load(object sender, EventArgs e)
GuidClass currentGuid =new GuidClass();
currentGuid.Guid = hndGuid.Value;
System.Web.HttpContext _httpContext = System.Web.HttpContext.Current;
if (temp.Contains<string>(currentGuid.Guid))
_httpContext.Items.Add("IsRefresh",true);
else
if(!(currentGuid.Guid.Equals(null)||currentGuid.Guid.Equals("")))
temp.Enqueue(currentGuid.Guid);
_httpContext.Items.Add("IsRefresh",false);
【问题讨论】:
请同时提供相关标记代码。 ***.com/questions/778952/…***.com/questions/4995274/… 【参考方案1】:将代码块移动到单独的用户控件中,不需要后面的代码
http://csharpin.blogspot.com/2011/05/about-the-controls-collection-cannot-be.html
【讨论】:
以上是关于无法修改 Controls 集合,因为控件包含代码块(即 <% ... %> ),动态添加具有 Masterpages 的控件的主要内容,如果未能解决你的问题,请参考以下文章
无法修改 Controls 集合,因为该控件包含代码块(即 <% ... %>)。Telerik.Web.UI.RadAjaxControl.MoveUpdatePanel
无法修改 Controls 集合,因为该控件包含代码块(即 <% ...%>)ajax 工具包 html 编辑器
控件集合无法修改,因为控件包含代码块(即 <% ... %>)