2016-11-18 4 views
0

私は以前の開発者から継承したMVCアプリケーションのパターンに気付きました。モデルを定義するとき、選択項目とチェックボックスの項目を含むすべての情報がモデルに渡されます。ASPNET MVC - モデルには何が入りますか?

public class MyModel 
{ 
    int MyEntityField1 {get;set;} 
    string MyEntityField2 {get;set;} 
    public selectList SelectItens1 {get;set;} 
    public selectList SelectItens2 {get;set;} 
} 
... 
MyModelInstance.SelectItens1 = new selectlist(... 
MyModelInstance.SelectItens2 = new selectlist(... 
return view (MyModelInstance); 

SelectItens1とSelectItens2の情報は一方向です。ビューアイテムをビューに渡すためにViewBagを使用する代わりに、上記のようにすることの利点は何ですか?

public class MyModel 
{ 
    int MyEntityField1 {get;set;} 
    string MyEntityField2 {get;set;} 
} 
... 
Viewbag.SelectItems1 = new SelectList (... 
Viewbag.SelectItems2 = new SelectList (... 
return view (MyModelInstance); 

私はそれがモデルが全く利益のために脂肪を作ると思う。

お知らせください。

答えて

0

一般的に、モデルは最小限に抑える必要があります。

しかし、Microsoft ASPNET MVCパターンでは、コントローラをクリーンにしておきたい、マイクロソフトでは、コントローラを使わずにモデルを肥やすことを推奨しています。

「一般的には、あなたが脂肪のモデルとスキニーのコントローラのために努力すべきである。 お使いのコントローラメソッドは、わずか数行のコードが含まれている必要があります。 コントローラのアクションがあまりにも太ってしまった場合、あなたは ロジックを移動することを検討すべきですModelsフォルダ内の新しいクラスに移動します。

https://www.asp.net/mvc/overview/older-versions-1/overview/understanding-models-views-and-controllers-cs

1

両方のアプローチは

そのわずか開発者の嗜好大丈夫です最初のアプローチ: モデル内SelectListItemを持っても害はありませんが、また、それはあなた与えますあなたのUIにフィールドが必要であることを明確に把握しているので、モデルを見れば、UIがドロップダウンリストコントロールをレンダリングする必要があることがわかります。

第2のアプローチ:このモデルを1ページまたは最小限のページでのみ使用する場合、Viewbagは大丈夫です。この場合も、開発者はUIがどのようなコントロールをレンダリングする必要があるかを知っている必要があります。

したがって、アプローチは純粋に開発者の選択であり、私はどちらかというと大きなパフォーマンスの向上は見られません。

私は個人的にはよりクリーンでコントローラのコードを少なくして最初のアプローチを使用します。

関連する問題