私はビューモデルの周りに頭を包み込み、それらを使用するのが適切な場合にしようとしています。この状況で何をすべきかについての説明が欲しいです:
モデル:
public class Person
{
public string firstName {set;get;}
public string lastName {set;get;}
public string City {set;get;}
.... other junk
}
コントローラ:
IEnumerable<Person> model = db.Person
.Where(r => r.City == city)
.Select(r => new Person{
firstName = r.firstName,
lastName = r.lastName,
something = r.something});
ここで、私のページで、ユーザーがcity
フィルタリングしたいを選択できるとしましょう。また、とだけを表示しfirstName
たいlastName
。これはビューモデルを使用するときでしょうか?以前は、このようなことをしていました。
ビューモデル:
public class PersonViewModel
{
public string firstName {set;get;}
public string lastName {set;get;}
public string cityChoice {set;get;}
public IEnumerable<SelectListItem> cityList {set;get;}
}
私のクエリはタイプを返すので、クエリによって返される行ごとIEnumerable<Person>
にを持っていることに気づきました。cityList
より良いビューモデルは何でしょうか?私の次の考えはすべてを作ることIEnumerable
です:
public class PersonViewModel
{
public IEnumerable<string> firstName {set;get;}
public IEnumerable<string> lastName {set;get;}
public IEnumerable<string> cityChoice {set;get;}
public IEnumerable<SelectListItem> cityList {set;get;}
}
これは賢明な選択ではないようです。それはただ散らかっているように見え、実装もそれが苦痛かもしれないように見えます。
要するに、コントローラーからビューに最小量のデータを渡しながら、を維持するための最良の方法は何List<SelectListItem>
ですか?viewbag
リストがまたはを介して渡される実装を見たことがありますがviewdata
、それはパッドの練習のようです。前もって感謝します。