2012-01-11 14 views
1

ビューモデルでデータを取得することについて質問があります。例えばasp.net mvc viewmodelsとモデルクラスのデータを取得する

私はのviewmodelを持っている:

public class EmployeeCreateVM 
{ 
    public Employee Employee { get; set; } 
    public List<EmployeeState> EmployeeStates { get; set; } // dropdownlist data 
    public List<EmployeeType> EmployeeTypes { get; set; } // dropdownlist data 

    public EmployeeCreateVM() 
    { 
     EmployeeStates = ... 
     EmployeeType = ... 
    } 
} 

私の質問は、デザインビューモデル、特別フェッチデータについてです。 私の現在のプロジェクトのために、私は、例えば、コントローラからデータをフェッチしています:

[Get] 
EmployeeCreateVM model = new EmployeeCreateVM(); 
model.EmployeeStates = _repository.... 

[Post] - again 
model.EmployeeStates = _repository.... 

は、ビューモデルクラスから直接データをフェッチする悪い習慣はありますか?

おかげ

答えて

1

はい、それは懸念の分離に違反するとして。後でデータアクセス方法を変更する必要がある場合、そのリポジトリを使用する各ビューモデルで、単一の場所(コントローラ)には存在しなくなります。

ここでより多くの議論があります:興味深いリンクの What to put in your ViewModel

+0

おかげで。私のアプリケーションで私はDIを使用しているので、データアクセスメソッドを変更した場合、私は他の実装を自分のリポジトリクラスに書き込んで、それをdi configiに設定します – Mennion

+1

@Mennionでも、ビューモデル(と同様にすべてのクラス)は1つのことを行う必要があります。コントローラ/ビューに特定の 'EmployeeTypes'を返すことだけを考えたとしたら、これは間違っている' EmployeeCreateVM'クラスを編集する必要があります。 – wal

+0

@Wal - はい、VMクラスのデータを取得することは私にとって不自然です。しかし、私はDRYの原則が好きで、アクションを取ったり取ったりすることでドライビングが起きないのですが... – Mennion

関連する問題