为什么我不能在.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.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" %>