我在项目中构建了一个用户控件,我想在一个单独的项目中重用它。通过添加对原始项目的引用,然后通过以下方式注册控件,我看到了类似的尝试成功完成:
<%@ Register Assembly="AssemblyName" Namespace="AssemblyName.Namespace" TagPrefix="xxx" %>
我做了类似的事情,编译原始项目并在后续项目中引用它。控件中有一个asp:Repeater控件。然后我按照上面的方式注册了我的控件并将控件放在我的页面上(控件有一个名为prop的字符串属性):
<xxx:ControlName ID="ControlId" runat="server" prop="21" />
然而,当我在后续项目中启动控件时,我得到一个空引用异常,并且应用程序会阻塞。我这样做是错误的吗?我是否必须在后续项目中使用.ascx文件?
感谢任何和所有帮助。
谢谢,
PBR
答案 0 :(得分:3)
正如对此的跟进:
我做了一些进一步的研究,并了解到标记语言(.ascx页面上的材料)没有编译到程序集中。因此,如果存在与控件关联的任何标记,则必须在项目中具有.ascx文件。
在属性对话框中,我设置了一个构建后事件,将.ascx文件复制到后续项目控件文件中。我像任何普通的用户控件一样引用它,一切正常。
希望这可以帮助那些有类似问题的人,
PBR