2016-04-22 8 views
1

My Home Model/View/Controller(ページの初期状態を構成します)が正常に動作しています。シナリオごとに別々のモデル/コントローラが必要ですか、複数のシナリオで単一のモデル/コントローラを再利用できますか?

また、ユーザーがページ上で行った変更(選択からオプションを選択する、チェックボックスをオンにするなど)に対応する必要がありますが、まだ機能していません。

私が問題を抱えているのは、ページの初期化に必要なものだけでなく、他のいくつかのものも含む「ホーム」モデルを再利用しようとしていることでしょう。例えば、私のモデル:

public class HomeModel 
{ 
    public DataTable Units { get; set; } 
    public DataTable Reports { get; set; } 
    public DataTable UnitReportPairEmailVals { get; set; } 
    public DataTable UnitReportPairGenerateVals { get; set; } 
    . . . 
} 

は...ページが最初に必要なもの(「単位」と「レポート」と省略記号のドットによって表されるもの)だけでなく、それ以降でのみ必要なものを(他が含まれています2つが示されている)。

Ajax呼び出しのために別のモデルとコントローラを使用する必要があるため、このデータを(HomeControllerの別のメソッドへのAjax呼び出しを介して)取得することに問題があるかどうかは疑問です。

私は疑問に思っています:モデル/コントローラの拡散コードの匂い/アンチパターン、または必要ですか?

public class AJAXModel 
{ 
    public DataTable UnitReportPairEmailVals { get; set; } 
} 

...と対応する別のコントローラを作成する必要がありますか?

さまざまなシナリオで使用されている複雑なモデルを使用している場合、モデルをアクションの戻り値(結果)として渡すたびに、余分な/未埋め込みのものも渡されるようです(私が当時関心を持っていたメンバーだけがコントローラに移入され、多くの空/ヌルメンバーを返す)。

私の質問は、それぞれの "ユースケース"に対して、モデル/コントローラを作成する必要がありますか、それとも大丈夫ですか?

+2

一般的なアプローチは、いくつかの特定の 'ViewModel'オブジェクトをクライアントに渡すことです。そして、オートマッパーを使用して、共通の複雑な' Model'をシナリオ固有の 'ViewModel'にマップします。あなたのケースで新しい 'Controller'クラスまたは' Model'クラスを作る理由はありません。 – Clay

+0

ビューを変更しない場合は、別のコントローラを作成する理由についてどう思いますか?あなたの既存のコントローラで別のアクション**を意味するのではないですか? –

+0

複合モデルを再利用することは、モデルの増殖よりも反パターンのようです。また、私はモデルで 'DataTable'を使うのに少し懐疑的です。 –

答えて

2

Modelを1つのControllerに限定するか、またはControllerには1つだけModelがあると予想する理由はありません。 1つのControllerでアプリ全体を書くことができます(ところで、本当に悪い考えです)。

一般的に、分割は論理的なものです... 1つのコントローラー内の同じセットのModelsと話すアクションの束。あなたが何か他のものとしてソースファイルを開くと、あなたの脳が溶けるのを防ぐことがもっとあります。

多くの場合、複数のViewsがあり、コントローラ内でActionsという名前のmachという名前になりがちですが、これは厳密には強制されません。

あなたが必要以上にあなたがViewでより多くのデータを取得しているように感じる場合は、これはViewのコードを簡素化するためにViewModelModelをマッピングすることにより、簡素化することができます。はい、これはMVVMです...そしてまた...脳は、Viewのより簡単なオブジェクトを扱いにくいです。

オブジェクトをControllerに手動でマップすることも、自動マッパーを使用してオブジェクトをマップすることもできます。そこから選択する番号があります...そして、彼らはMVVMをより単純なものにします。必ずしもにはが必要です。彼らはただ役に立ちます。

+0

「フロリダ・ヒル・カントリー」*がフロリダの島になるまでの期間はどれくらいかと思います。私は聖アウグスティヌスに行ったことがありますが、私はフロリダのどの部分も諺のフラップジャックよりもフラットではなかったことを知っていませんでした。 –

+1

本当に恐ろしい命題。私たちは110 'にあります...少なくとももう10年はいいですか? – Clay

関連する問題