我的.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请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
为什么呢?我该如何解决?感谢
P.S。如果我在Master Page上放置相同的代码也可以...
堆栈追踪:
[NullReferenceException:对象引用未设置为对象的实例。] IZ.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
Here是您可以获取该插件的链接。我只是将DLL放入Bin文件夹并将该代码写入我的Web用户控件。总是在Master Page上使用,但在WUC中我遇到了麻烦......
答案 0 :(得分:2)
如果只指定命名空间和程序集,则只能获取控件的ascx.cs部分而不是代码前端文件(.ascx) 由于您的代码隐藏文件(.ascx.cs)依赖于您的代码前端文件(.ascx)来实际实例化您声明的所有内容,因此您需要在寄存器指令中包含Src
<%@ Register Src="~/cms/context/Test.ascx" TagPrefix="iz" TagName="Test" %>
如果您创建的控件没有代码前端文件(以前称为“自定义控件”),您只需指定命名空间和程序集即可,但如果您希望获得代码前端的便利性文件(“用户控件”),您需要指定源。
asp.net框架中的所有内置控件都是作为自定义控件创建的,这意味着微软很难编写它们(它们不能使用ascx文件),但我们更容易使用它们(单个) web.config中的注册行启用所有页面
答案 1 :(得分:1)
我很确定你错过了来源参考:
<%@ Register Src="~/cms/context/Test.ascx" TagPrefix="iz" TagName="Test" %>