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; }
}
...と対応する別のコントローラを作成する必要がありますか?
さまざまなシナリオで使用されている複雑なモデルを使用している場合、モデルをアクションの戻り値(結果)として渡すたびに、余分な/未埋め込みのものも渡されるようです(私が当時関心を持っていたメンバーだけがコントローラに移入され、多くの空/ヌルメンバーを返す)。
私の質問は、それぞれの "ユースケース"に対して、モデル/コントローラを作成する必要がありますか、それとも大丈夫ですか?
一般的なアプローチは、いくつかの特定の 'ViewModel'オブジェクトをクライアントに渡すことです。そして、オートマッパーを使用して、共通の複雑な' Model'をシナリオ固有の 'ViewModel'にマップします。あなたのケースで新しい 'Controller'クラスまたは' Model'クラスを作る理由はありません。 – Clay
ビューを変更しない場合は、別のコントローラを作成する理由についてどう思いますか?あなたの既存のコントローラで別のアクション**を意味するのではないですか? –
複合モデルを再利用することは、モデルの増殖よりも反パターンのようです。また、私はモデルで 'DataTable'を使うのに少し懐疑的です。 –