これまで、Modelクラスを使用して関連する値のリストを埋め込んで、ビューにDropDownListとしてレンダリングしました。例えば、私は私がするまで正常に使用しているなどの顧客、サプライヤー、などのすべての連絡先の種類が含まれているデータベーステーブルの行を参照することリポジトリクラスを使用するときのHtml.Dropdownlistの値
public class Contact {
...
public int ContactTypeID { get; set; }
...
}
ContactTypeIDでContactTypeプロパティを持っている連絡先のモデルクラスがあるとし今Contactクラスのプロパティには、例えば、と呼ばれる、ContactTypeList私は
<%: Html.DropDownListFor(model => model.ContactTypeID, Model.ContactTypeList, new {})%>
以下の方法を行うことができ、強力な型指定されたビューを使用してこの方法で、次のサンプル
public IEnumerable<SelectListItem> ContactTypeList {
get {
return GetContactTypeList().Select(
t => new SelectListItem { Text = t.Description,
Value = t.ContactTypeID.ToString() });
}
}
のように
この方法は問題なく動作しますが、SoCの観点からは完全には清潔ではありません。
新しいプロジェクトでは、DI/IoCツールとしてリポジトリパターンとStructureMapを使用しています。そのため、モデルクラスには、基本データからデータを取得するリポジトリクラスへの参照がありません格納。
私はいつもコントローラとViewData/ViewBagを使用してこれらのリストをビューに渡すことができることを知っていますが、これがスコープを達成する良い方法かどうか疑問に思っていました。
あなたのプロジェクトではどのようにしていますか?結果を達成し、コードをきれいに保つ最良の方法は何ですか?我々はまた、リストを格納し、ビューでそれらを使用するためのViewDataを使用して私たちのプロジェクトでは
素晴らしいもの!! automappingの提案をありがとう:) – Lorenzo