动态添加在web.config中注册的用户控件

时间:2009-03-13 16:52:25

标签: asp.net

我正在开发一个项目,其user controls registered in its web.config file(看起来非常干净整洁)

到目前为止一直很好(这是问题所在)但是我正在尝试动态创建并向页面添加用户控件。这些用户控制需要处理的火灾事件。

通常这不会是一个问题: 你只需在页面中注册控件,加载控件,将其转换为正确的类型,然后分配事件处理程序,将其添加到页面中,坐下来让魔法发生,轻松自如。

但是当控件在web.config中注册时,我无法引用控件的类型,这意味着没有强制转换,这意味着没有事件处理!

奇怪的是,如果在设计时将usercontrol添加到页面,则可以引用该类型!

必须有一种解决方法(无需在页面上注册控件,或在设计时添加控件),我到底错过了什么?

3 个答案:

答案 0 :(得分:2)

已经有一段时间了,但我认为当项目是网站而不是Web应用程序时,我在ASP.NET中看到过这种行为。据我所知,网站将每个页面编译成自己的程序集,没有通用名称空间,无论配置如何,都需要<%@ Register%>指示。如果不这样做,则会得到错过程序集引用的确切错误。

我必须测试以确保...

答案 1 :(得分:0)

说:“如果在设计时将用户控件添加到页面,则可以引用该类型”

您的意思是它添加<%@ Register%>页面顶部的指令?

或者,它可能会在源文档中添加using / Imports(取决于您使用c#/ vb.net)子句?

因为,为了能够转换为您的控件类型,您通常需要在代码绑定中导入命名空间。也许这就是缺少的东西。

答案 2 :(得分:0)

< controls> web.config中的部分和<%@ Register%>指令是一回事(web.config中的条目适用于整个应用程序的小例外)。它们允许您将设计时控件添加到Web表单中。

如果要动态地向页面添加控件,请使用LoadControl函数获取控件的实例。给定一个类名为“Header”的控件,下面将加载一个控件,设置一个属性,并将控件添加到名为“form1”的表单中:

    Dim head As Header = LoadControl("~/Controls/Header.ascx")
    head.Text = "Some text..."
    Me.form1.Controls.Add(head)
相关问题