MVC3を使用しています。
多くのサブクラスを含むかなり複雑なドキュメント クラスがあります。それらを「犬」、「猫」、「羊」、「牛」、「ヤギ」と呼びましょう。
これらの各クラスを一覧表示、追加、および編集するには、汎用コントローラーを使用したいと思います。
リスト: ドキュメント モデルを渡し、関連するクラスを反復処理することで、関連するエンティティをリストできます。
編集:IDを取得して、対象のクラス、つまり「犬」を識別し、これを編集用のモデルとして渡す必要があります。ただし、次回は「猫」インスタンスを編集する可能性があります。私が理解しているように、通常MVCでは、理想的には「DogController」と「CatController」を作成します。ただし、このドキュメント クラスは柔軟であることを意図しているため、コントローラをハード コードすることは望ましくありません。さらに 2 つのクラス、つまり「馬」と「ロバ」を追加する必要があるかもしれません。
現時点では、if/else ロジックを使用して、正しいビューが設定され、正しいクラスで呼び出されるようにしています。ただし、ここで MVC ルールに違反しているように感じます。
おそらく、その答えは、より正式な ViewModel を使用することにあるでしょう。おそらく、プロパティの 1 つをサブクラス ("Dog") として持つことができます。おそらくこれは、IOC を使用して実行時に交換できますか?
考えや指針はありがたかったですか?
ありがとう。
編集:異なる入力モデルで「編集」アクションの2つのバージョンを作成しようとしました
[HttpPost]
public ActionResult Edit(Dog DogModel){}
[HttpPost]
public ActionResult Edit(Cat CatModel){}
メソッドのオーバーロードにより、ビューが投稿されたときにMVCが正しいものを選択してから、モデルバインディングを適用できると思いました。
期待しすぎたのか、私の理解が不足しているのかもしれません。