C# 为什么我能';不要加上这句话;“自定义控件”;在a.ascx中?

C# 为什么我能';不要加上这句话;“自定义控件”;在a.ascx中?,c#,.net,custom-controls,C#,.net,Custom Controls,My.ascx位于/cms/context/文件夹中,名为Test.ascx(在.NET4.0、WebForms上) 当我尝试添加: <%@ Register TagPrefix="iz" Namespace="IZ.WebFileManager" Assembly="IZ.WebFileManager" %> <div> <iz:FileManager ID="FileManager1" runat="server" Height="400" Width

My.ascx位于/cms/context/文件夹中,名为Test.ascx(在.NET4.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:对象引用未设置为对象的实例。] 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(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+4200


是你可以获得插件的链接。我只是将DLL放入Bin文件夹,并将代码写入我的Web用户控件中。始终在母版页上使用,但在WUC中,我有这个问题…

我很确定您缺少源代码参考:

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

我很确定您缺少源代码参考:

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

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

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

如果创建控件时没有代码前端文件(以前称为“自定义控件”),则只需指定名称空间和程序集即可,但如果希望获得代码前端文件(“用户控件”)的便利,则需要指定源


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

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

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

如果创建控件时没有代码前端文件(以前称为“自定义控件”),则只需指定名称空间和程序集即可,但如果希望获得代码前端文件(“用户控件”)的便利,则需要指定源


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

您可以在我的问题:)上找到它,感谢您添加这些内容。“对象引用未设置为对象的实例”是为那些需要它的人翻译的。对不起,没有注意到意大利语!有什么想法吗?还添加了soruce和我所做的!你可以在我的问题上找到:)谢谢你补充。“对象引用未设置为对象的实例”是为那些需要它的人翻译的。对不起,没有注意到意大利语!有什么想法吗?还添加了soruce和我所做的!你是说当我在.aspx中导入ascx时?不,它也能用。。。我有其他运行的代码…你是说当我在.aspx中导入ascx时?不,它也能用。。。我有其他运行的代码…@Jakub这是真的,但OP显然误读了你的答案,因为他接着说:“……它也可以运行……我有其他运行的代码……”我只是想提供更多的上下文,我不是有意要批评你parade@Jakub没错,但OP显然误解了你的答案,因为他接着说:“……它也能起作用。。。我有其他运行的代码……”我只是想提供更多的上下文,我并不是有意冒犯你们