我正在尝试从另一个项目加载用户控件,我喜欢用它的名称空间来实现:
<%@ Register TagPrefix="IPGostar" Namespace="IPGostarPorject" Assembly="IPGostarPorject" %>
但是当我使用这个服务器标签时这样:
<IPGostar:DataGrid runat="server" ID="DataGrid1"></IPGostar:DataGrid>
将加载DataGrid.ascx.cs的Page_Load,但不会加载ascx文件的内容。 这就像这个标签只调用cs文件而不是首先调用ascx文件..
在这种情况下,是否可以在.cs文件中加载.ascx用户控制文件? (例如我们在Page_Load函数上渲染ascx文件)如果可以的话我该怎么做? 我是在第二个错误的道路吗?
答案 0 :(得分:1)
将寄存器标记修改为
<%@ Register TagPrefix="IPGostar" TagName="IPGostar" Src="DataGrid.ascx" %>
如果您使用的是用户控件,则必须指定源文件。您的语法适用于自定义控件。
答案 1 :(得分:0)
您需要查看使用Page.LoadControl()
加载控件。
在运行时,ascx继承自ascx.cs中定义的类。它们不是同一件事。 ascx中定义的控件是ascx.cs中的子类。
如果要将控件完全分发为二进制文件,则需要将其重写为ServerControl而不是带有ascx的UserControl。
您无法在后面的代码中从类的Page_Load渲染ASCX。这不会影响你的想法。