問題タブ [mvp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
controls - モデル ビュー プレゼンター - より複雑な UI コントロールの処理
Model View Presenter パターンを調査しています。これまでのところ、私が見ているものは気に入っていますが、ほとんどすべての記事、ウェブキャスト、ポッドキャストなどです。私が見たり、読んだり、聞いたりしたことは、テキストボックスからの単純な型の設定と取得に対処する傾向があり、対処方法を理解するのに苦労していますより複雑な UI コントロールを備えています。
たとえば、CheckedListBox があるとします。この CLB では、使用可能なすべての選択肢と、特定のインスタンスに対して選択された選択肢を表示したいと考えています (FavouriteIceCreamFlavours リストを持つ Friend クラスを想像してください)。リスト ボックスを簡単に埋めることができますが、選択されているものをどのように設定するのでしょうか (たとえば、この友人のその後の編集で)。また、これらの変更を元の Friend オブジェクトに永続化するにはどうすればよいでしょうか?
別の候補は TreeView です。TV のノードを右クリックして、ユーザーがそのノードを削除できるようにしたいとします。そのアクションをプレゼンターに伝える最善の方法は何ですか?
乾杯、
レニー。
(PS 私は C# 3.5/WinForms 環境で開発しています)
model-view-controller - モデルレイヤーからのユーザー入力の取得
MVP または MVC の設計パターンに従うことに問題がある (どちらにも当てはまる)。モデルレイヤーからユーザー入力をきれいに求める方法がわかりませんか? モデル内の特定の値によっては、プロセスの途中でユーザーに入力を求める必要がある場合があります。
たとえば、架空の PO エントリ プロセスを取り上げます。ユーザーがビューのボタンを押した後、ビューから PO の詳細を渡してプレゼンターを呼び出すとします。次に、プレゼンターはモデルを呼び出して新しい PO を検証し、PO のコレクションに挿入します。モデルの検証チェックの 1 つは、同じアイテムで別の PO がまだ入力されていないことを確認することです。所有している場合、アプリは PO が重複していないことを確認するようユーザーに求める必要があります。アプリは現在、モデルの奥深くにあります。ビューに戻ってオペレーター入力を取得し、中断したモデル コードに戻って PO エントリ プロセスを終了するにはどうすればよいですか?
winforms - パブリック メソッドまたはビュー イベントへのサブスクライブ
View が IView インターフェイスを実装する WinForm である MVP プロジェクトを作成しました。私はコードを見直し、できる限り改善している最中です。ビューとプレゼンターがどのように相互作用するかについて、あなたの考えをお聞きしたいと思います。あなたの意見では、次のうちどれがベストプラクティスですか?
- ビューが使用するプレゼンター クラスのメソッドを公開します。(つまり、それらを公開します)。
- View クラスによって発生したイベントをプレゼンターにリッスンさせます。
たとえば、私の MVP は、シリアルポート経由で通信するサービスを使用しています。リモート デバイスに接続するために、ビューは public Presenter メソッド Connect() を呼び出し、それから適切なサービス メソッドを呼び出します。
Connect() イベントを発生させ、プレゼンターにそれをリッスンさせる方が良い方法でしょうか?
c# - TreeView コントロールから MVP プレゼンターに階層データを公開するにはどうすればよいですか?
Winforms TreeView コントロールにいくつかの階層データがあり、それをプロパティとして公開して、プレゼンターが変更を同期できるようにする必要があります。明確にするために、私はパッシブ ビューパターンを使用しています。ほとんどの WinForm コントロールでは、これは簡単です。コントロール自体は、プレゼンターに簡単に渡すことができるシステム タイプとしてデータを公開します。TreeViews は、複雑であるため、システム タイプに簡単にマップできません。フレームワーク コレクション型を探しましたが、ツリー型は見落とされているようです。(Microsoft は、いくつかの高レベル クラスの内部でツリー構造を使用しているように見えますが、汎用ツリークラスのファミリーを作成しないことを選択しました。)
いずれにせよ、私が公開しようとしているデータの深さは 2 ノードを超えないため、TreeView を使い続けるかどうかさえわかりません。さらに、プレゼンターを TreeNodeCollection に結び付けることを避ける必要があります。
私はすでにいくつかのアイデアを思いつきましたが、SO コミュニティからそれらを跳ね返したかっただけです。
- ツリーをコレクションのコレクションとして公開します...リストの辞書としましょう。
- カスタム ツリー構造を作成し、プロセス内のビューに依存関係を導入します。
最上位ノードは平均 5 ~ 10 エントリで、子ノードは理論的には 50 ものヒット数を達成できますが、実際には 3 または 4 を超えることはありません。
助言がありますか?
c# - プレゼンターは、ユーザーに詳細情報の入力を求める必要があります。どうすれば配線できますか?
パッシブビューパターンを使用しています。ユーザーが新しいアカウントボタンをクリックします。ビューは、パラメーターなしのメソッド呼び出しを使用して、プレゼンターに責任を委任します。
問題は、複数のアカウントタイプがあるため、ユーザーは作成するアカウントタイプを選択する必要があることです。これを解決するにはどうすればよいですか?
- ビューから新しいフォームを作成し、必要な情報を取得して、プレゼンターが取得できるようにプロパティとして公開します。(これは、ビューにロジックが含まれていてはならないという概念を無視します)
- プレゼンターから新しいフォームを作成して使用します。(これは、MVPの全体的なポイントを無視して、プレゼンターをフォームに直接結び付けます)
- 新しいフォームを別の場所に作成し、コンストラクター引数としてプレゼンターに渡します...またはビュー。
- それを忘れて、アカウントタイプごとに新しいボタンを追加してください。(アカウントの種類はいくつかあり、UIが乱雑になりますが、そうなります。)
- 私はこれを間違った方法で行っているので、私のデザインを再考する必要があります。(この場合、正しい方向に少しずつ動かしていただければ幸いです。)
c# - MVP でサブビューをロードする
ここ数日、winforms を使用して MVP パターンをいじっていますが、どうすればよいかわからないことが 1 つだけあります。別のビューからサブフォームを作成する方法を教えてください。これは有効なオプションでしょうか。
私は主に、このパターンを使用してサブフォームをロードする方法と、最初のページからサブフォームに ID を渡す方法に関心があります。
ありがとう。
asp.net - Visual Studio 用の MVP テンプレートはありますか
フォルダ構造を作成するためにMSが提供するMVCフレームワークのように?
design-patterns - MVPフレームワークプロジェクトはありますか?
MVCは、多くの一般的なフレームワークで使用されています。ほんの数例を挙げると、Ruby on Rails、ASP.NET MVC、Monorail、SpringMVCです。
MVPのバリアントを使用する同等のフレームワークはありますか?
私がオンラインで見つけた例のほとんどは、再利用可能なフレームワークではなく、パターンのカスタム実装のようです。
提案は特定のプログラミング言語に固有である必要はありません。私の興味は主に学術的なものです。
design-patterns - コントローラーのパターン理解の監視
単純な Web アプリケーションで監視コントローラー パターンを使用しようとしています。私のビューはサインアップ フォームであり、ユーザーが入力するための多くのフィールドがあります (gmail サインアップの数ページを考えてください)。このデータはエンティティに入力され、このエンティティはユーザーが送信したときに処理されます。
例えば:
これについていくつか質問があります。
1) 非常に多くのプロパティがある場合、このようにビューにプロパティを設定する必要がありますか? とにかく入力するエンティティ オブジェクトを使用するべきではありませんか?
2) このデータは最終的にエンティティ オブジェクトに入力されるため、コントローラーはこのオブジェクトへの参照を保持する必要がありますか?
ヘルプやアドバイスをいただければ幸いです。
c# - winform の複雑な監視コントローラーの例
これが以前に尋ねられた場合は申し訳ありませんが、助けが見つかりませんでした。
監視コントローラーの MVP パターンを使用して作成された複雑な winform の良い例があるかどうか疑問に思っていました。私は多くの例を読みましたが、それらは実際には単純で、1 つのフォームと 1 つのモデルしか扱っていません。
私が探しているのは、あるビューから別のビューにデータを渡す方法と、通信回線をどこに配置し、何を何にバインドする必要があるかを示す例です。
次のような UI があるとします: 代替テキスト http://img12.imageshack.us/img12/2683/layoutcroped.jpg
怪しげな UI モックアップで申し訳ありません。基本的に、各ユーザー コントロールには独自のプレゼンターとモーダル レイヤー オブジェクトがあります。
私がする必要があるのは、ユーザー コントロール 1 のテキスト ボックスの入力を取得し、(ユーザー コントロール 1 のプレゼンターで) サービス オブジェクトを使用してデータベースから適切なアイテムを取得し、モーダルとしてユーザー コントロール 2 に渡すことです。
私の質問は次のとおりです。ビュー インターフェイスを介してモデルをユーザー コントロール 2 に渡すか、そのプレゼンターに渡しますか?
これが理解しにくい場合は申し訳ありませんが、MVP パターンを使用するユーザー コントロールでフォームを使用できるが、2 つの間でデータを渡す方法についての例が見つからないという人をよく見かけます。
編集: 私は2つの異なるものを作成しましたが、これができると思いました:
と
Ex1 の方が優れていると思います。彼らがやりたいことをするために。
どう思いますか?
ありがとう。