1

私は、いくつかの異なる画面で構成され、それぞれが独自のユーザーインターフェイス操作のセットを持つDotNetNukeモジュールに取り組んでいます。各画面を異なるモジュールコントロールに配置することで、これを処理することにしました。そのコントロールをロードするために私が見つけることができる唯一の方法は、リンクにURLを与えることです:

Globals.NavigateURL(Constants.LicenseDetailControl, "clientId=" + _clientId, "licenseId=" + data.Id, "mid=" + this.ModuleId);

mid=xxx残念ながら、これにより、クエリパラメータが原因で、ページがこの特定のモジュールのみをレンダリングするように制限されます。ただし、モジュールIDパラメーターを指定しないと、コントロールがまったくレンダリングされず、ページが空白になります。

ページに1つのモジュールのみを表示させることなく、特定のコントロールをレンダリングする方法はありますか?

4

2 に答える 2

3

ページに 1 つのモジュールのみを表示するように強制せずに、特定のコントロールをレンダリングする方法はありますか?

いいえ、答えはありません。

ctl タイプとモジュール ID を指定して特定のコントロールをレンダリングすることは、通常、編集モジュールと管理モジュールに使用され、特にページから他のモジュールを除外します。

Mitchel が答えたように、動的ローディングを自分で行う必要があります。これを行う他のモジュールがあり、パターンをコピーできます。多くの Ventrian モジュールは、独自の Url 仕様を使用してさまざまなコントロールをロードします (つまり、Url で /ctl/xx と /mid/yy を使用せず、'view=x' などの独自の定義に置き換えます)。

ただし、1 つの DNN ページに「リスト」があり、別のページに「ビュー」があるように、モジュールをさまざまなページに分散させることもできます。これにより、より論理的な URL のセットが得られます (/licences と呼ばれるライセンス リスト ページと、/licence/licenceId/xx と呼ばれるライセンス詳細ページを想像してください)。また、サイト全体でモジュールをより柔軟に使用できます。ただし、すべてのモジュールを 1 つのページにダンプするだけなので、インストールが直感的ではなくなります。

しばらく前に、このトピックに関するブログ投稿を書きました - すべてがどのように組み合わされるかを説明しようとしています. 古いものですが、すべて関連性があり、さらに詳しい情報が得られる可能性があります。 DotNetNuke モジュールの設計、構造化、および設計

または、別のコメント投稿者が既に投稿しているように、コンテンツの完全な AJAX 表示を行うだけです。

于 2012-04-13T04:23:52.790 に答える
2

さて、これに対する答えは、あなたが期待するほど簡単ではありません。あなたが見ている状況は、「モジュールの分離」として知られているものであり、フレームワークの観点からは、それを回避する実際の方法はありません.

ただし、モジュール内でこれを実行して目的の効果を得る方法については、いくつかのオプションがあります。

  1. メイン ビュー コントロールでは、渡して処理するクエリ文字列の値に応じて、実際のビューを PlaceHolder に動的に読み込みます。
  2. メイン ビュー コントロールには、各ビューのパネルがあり、パラメーターを介して必要に応じてそれらを表示/非表示にします
  3. メイン ビュー コントロールに、各ビューのサブ コントロールを追加します。ここから、再度パラメーターを処理することで、ビューを処理するために必要に応じてアイテムとビューステートを有効/無効にすることができます。

個人的には 1 か 3 のどちらかです。1 つはうまく機能し、最もクリーンですが、一部のコントロールには動的注入の問題があることがわかりました。それ以外の場合は、レンダリングされていないすべてのコントロールでviewstateを無効にして、そうでなければ2倍に肥大化するページサイズを減らすことができるという点で、オプション3が好まれます。

于 2012-04-12T17:30:35.353 に答える