0

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が正しいものを選択してから、モデルバインディングを適用できると思いました。

期待しすぎたのか、私の理解が不足しているのかもしれません。

4

1 に答える 1

0
routes.MapRoute("Route", "{controller}/{action}/{name}/{id}", new { controller = "Animal", action = "search", name = "Home", id = 0 });
于 2013-02-25T19:00:35.853 に答える