UI を提供する共通の Web ユーザー コントロールを使用して、いくつかのユーザー インターフェイス機能を共有するクライアント用のモジュールをいくつか開発しています。最初のモジュールを作成して .ascx ファイルに追加したときは、すべて問題ありませんでした。同じコントロールを 2 番目のモジュールに追加すると、次のエラーが発生します。
DotNetNuke.Services.Exceptions.ModuleLoadException: タイプ 'XXX.ParametersControl.ParameterTabControl' はあいまいです: アセンブリ 'C:\Clients\XXX\Code\Reporting\DotNetNuke_BaseInstall\bin\XXX.KPI_Configurable_Chart.DLL' またはアセンブリから来る可能性があります「C:\Clients\XXX\Code\Reporting\DotNetNuke_BaseInstall\bin\XXX.Survey_Grid.DLL」. 型名でアセンブリを明示的に指定してください。
両方のモジュールは、この追加の UI コントロールがなくても問題なくインストールおよび実行されます。
UI コントロールを別のプロジェクトとして開発し、含まれているバックエンド機能用に独自の DLL をコンパイルし、コンパイルされた DLL とモジュール インストール ファイル内のコントロール ASCX ファイルだけを使用してアプリケーションをデプロイしました。
メイン モジュール ASCX へのインクルードは、次のように行われます。
<%@ 登録 src="ParameterControl/ParameterTabControl.ascx" tagname="ParameterTabControl" tagprefix="uc1" %>
ご覧のとおり、Subversion 外部として実装するサブディレクトリからインターフェイス コントロールを取得して含めます。
次のように、メイン モジュールの .vb 分離コードでコントロールのオブジェクトとプロパティを参照します。
ParameterTabControl1.DateRangeTabVisible = True
If (ParameterTabControl1.StartDate Is Nothing) Then
ParameterTabControl1.StartDate = DateAdd(DateInterval.Day, -90, Now)
End If
これが起こらないように設計する方法に関するヒントはありますか? コントロールのプロパティとオブジェクトをクエリしてプロパティを設定および取得できるようにしながら、サブコントロール ASCX を独自の DLL にのみ接続し、メイン モジュール コントロールにバインドしないようにする方法はありますか?