我有一个非常简单的操作,我尝试添加一个HtmlGenericControl到另一个HtmlGenericControl:
protected void Page_Load(object sender,EventArgs e) { HtmlGenericControl div = new HtmlGenericControl("div"); HtmlGenericControl p = new HtmlGenericControl("p"); div.Controls.Add(p);//exception occurs }
仅在调试器中抛出异常 – 页面本身呈现为没有发生任何事情。然而,确实发生了一些事情,因为在较大部分的代码中,控件没有按照应用程序呈现。
实际例外是:
{InnerText = '((System.Web.UI.HtmlControls.HtmlContainerControl)(div)).InnerText' threw an exception of type 'System.Web.HttpException'}
我不明白为什么会发生这种情况,因为你应该能够以这种方式相互添加控件。
请注意,从第一个答案中,我再次尝试使用ID,但仍然无法正常工作:
我有更多的信息。
当使用占位符控件作为父级时,也不例外:
protected void Page_Init() { PlaceHolder ph = new PlaceHolder(); HtmlGenericControl p = new HtmlGenericControl("p"); ph.Controls.Add(p);//no problem }
解决方法
“An exception is thrown in the debugger only – the page itself renders
as though nothing had happened.”
没关系,如果有子控件,InnerText将无法正常工作这是设计的,因为它不想渲染整个层级的控件在当时的各种性能,生命周期和副作用的原因。
“… something definitely does happen,as in a larger portion of code,
controls are not being rendered as they should.”
这意味着什么?什么是在代码的“较大部分”中不正确地呈现?我猜这是其他地方的一个问题,与你在这里的问题无关。
所以我觉得你没事。忽略父控件中InnerText中的异常。您需要询问有关您的代码“较大部分”的任何问题的新问题。