2009-05-07 11 views
0

WebFormsからASP.NET MVCを使用するアプリケーションの一部を変換する処理中です。可能であれば、私は新しい開発のためにMVCを使用しています。私の問題はこれです:モデルのない単純なコントローラは有効なアーキテクチャですか?

このようにすると、私のモデルがMVCに完全に実装されていないことになります。 WebFormsアプリケーションに堅牢なウィジェット管理ページがあるとします。ウィジェットに色を付けるための新しい機能を追加しています。ウィジェットをクリックすると、色を選択する新しいページが表示されます。それだけです。 1つのフィールド。検証と保存の唯一の目的のために、WidgetIDとColorという2つのプロパティを持つWidgetColorPreferenceモデルを作成するのは馬鹿げているようです。

私は、 "SetWidgetColor"のようなメソッドでService名前空間を実装し、WidgetIDとColorパラメータを受け入れています。私のコントローラーアクションは単にモデルアセンブリでそのサービスを呼び出します。

私の質問:これは有効なストップギャップアーキテクチャですか?

答えて

4

MVCは、モデルの上にビューを配置するために存在します。あなたのアプリがすべてのビューでモデルがない場合は、そこにモデルを強制する必要はありません。あなたのアプリがより複雑になり、明白なモデルになると、あなたは再因子化することができます。

つまり、Hello WorldにはM、V、Cを使用しません。それは厳密に "V"になります。 「C」はビュー固有のスマートを追加し、「M」はビジネスロジック、永続性および取得を追加します。

0

ウィジェットモデルを使用して、モデルバインダーのインクルード/除外機能を使用して、ウィジェットモデルのプロパティをアクションで更新するだけだと思います。

public ActionResult UpdateWidgetColor(int id, string color) 
{ 

    var whitelist = new string[] { "Color" }; 

    Widget widget = db.Widgets.SingleOrDefault(w => w.ID == id); 

    if (widget == null) ...handle missing widget error 

    if (!TryUpdateModel(widget, whitelist)) 
    { 
     ... 
    } 
    else 
    { 

    } 
} 
TryUpdateModel

を使用して

public ActionResult UpdateWidgetColor([Bind(Include="Color,ID")]Widget widget) 
{ 

} 

または似たような

関連する問題