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) 宣言したすべてのものを実際にインスタンス化するには、レジスタ ディレクティブに Src を含める必要があります。

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

コード フロント ファイル (「カスタム コントロール」と呼ばれていたもの) を使用せずにコントロールを作成する場合は、名前空間とアセンブリを指定するだけで済みますが、コード フロント ファイル ("ユーザー コントロール」) ソースを指定する必要があります。

asp.net フレームワーク内のすべての組み込みコントロールはカスタム コントロールとして作成されます。つまり、Microsoft がそれらを作成するのは困難でした (ascx ファイルを使用できませんでした) が、それらを使用するのは簡単です (単一のレジスタ行web.config はすべてのページで有効になります)

于 2012-04-05T20:56:43.557 に答える
1

ソース参照が欠落していると確信しています:

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