为什么我不能在.ascx中添加这个“自定义控件”

本文关键字:自定义控件 添加 不能 ascx 为什么 | 更新日期: 2023-09-27 18:30:23

我的.ascx被放入文件夹/cms/context/,它被称为Test.ascx(在.NET 4.0,WebForms上)。

当我尝试添加:

<%@ Register TagPrefix="iz" Namespace="IZ.WebFileManager" Assembly="IZ.WebFileManager" %>
<div>
    <iz:FileManager ID="FileManager1" runat="server" Height="400" Width="600">
        <RootDirectories>
            <iz:RootDirectory DirectoryPath="~/images/" Text="My Documents" />
        </RootDirectories>
    </iz:FileManager>    
</div>

我得到 :

System.NullReferenceException。在执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。

为什么?我该如何解决它?谢谢

附言如果我在母版页上放置相同的代码,它也可以工作......

堆栈跟踪 :

[NullReferenceException:对象引用未设置为对象的实例。 伊兹。WebFileManager.FileView.OnPreRender(EventArgs e) +167 System.Web.UI.Control.PreRenderRecursiveInternal() +112 System.Web.UI.Control.PreRenderRecursiveInternal() +221 System.Web.UI.Control.PreRenderRecursiveInternal() +221 System.Web.UI.Control.PreRenderRecursiveInternal() +221 System.Web.UI.Control.PreRenderRecursiveInternal() +221 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4200

这是您可以获取该插件的链接。我只是将 DLL 放入 Bin 文件夹并将该代码写入我的 Web 用户控件。总是在母版页上使用,但在 WUC 中我遇到了麻烦......

为什么我不能在.ascx中添加这个“自定义控件”

如果只指定命名空间和程序集,则只会获得控件的 ascx.cs 部分,而不是代码前端文件 (.ascx)由于代码隐藏文件 (.ascx.cs) 依赖于代码前端文件 (.ascx) 来实际实例化已声明的所有内容,因此需要在注册指令中包含 Src

<%@ Register Src="~/cms/context/Test.ascx" TagPrefix="iz" TagName="Test" %>
如果在没有代码前端文件(

以前称为"自定义控件")的情况下创建控件,则只需指定命名空间和程序集即可,但是如果您希望获得代码前端文件("用户控件")的便利,则需要指定源。

asp.net 框架中的所有内置控件都创建为自定义控件,这意味着Microsoft更难编写它们(它们无法使用ascx文件),但我们更容易使用它们(web.config中的单个注册行启用所有页面)

我很

确定你缺少源参考:

<%@ Register Src="~/cms/context/Test.ascx" TagPrefix="iz" TagName="Test" %>