0

我的 .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 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

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

PS如果我将相同的代码放在母版页上它也可以工作......

堆栈跟踪 :

[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

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

4

2 回答 2

2

如果您只指定命名空间和程序集,您将只获得控件的 ascx.cs 部分,而不是代码前端文件 (.ascx) 因为您的代码隐藏文件 (.ascx.cs) 取决于您的代码前端文件(.ascx) 要实际实例化您声明的所有内容,您需要在 register 指令中包含 Src

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

如果您在没有代码前端文件(过去称为“自定义控件”)的情况下创建控件,则只需指定命名空间和程序集即可,但如果您想使用代码前端文件(“用户控制”)您需要指定来源。

All the built-in controls within the asp.net framework are created as Custom Controls which means that it was harder for Microsoft to write them (they couldn't use ascx files) but it's easier for us to consume them (single register line in web.config enables for all pages)

于 2012-04-05T20:56:43.557 回答
1

我很确定您缺少源参考:

<%@ Register Src="~/cms/context/Test.ascx" TagPrefix="iz" TagName="Test" %>
于 2012-04-05T18:53:06.390 回答