最初の投稿時間を検索します。私のアクションコントローラコードが</p> <p>私はMVCのABITで遊んでてきた...私は、これらのフィールドの一部がポストに空白にすることができ、複数の入力フィールドを持つビューを持っている、素人
ポストのためのコントローラ内部のアクションメソッドは、私は、私は」私のデータベース上で動的なのLINQ querysを実行するために周り蹴りされたDynamicQuery拡張子を使用してきたこの
public ActionResult Filter(int? id, string firstName, string lastName, bool? isMember)
ようになりますこれを、データアクセスレイヤに渡して実行するSearchオブジェクトにカプセル化しました。
しかし、私はまた、入力値とクエリの結果を表示するためにビューに戻されるカスタマイズされたViewDataオブジェクトを持っています。
SearchオブジェクトのプロパティとViewDatasの両方を設定する必要があるので、コードでは少し厄介なようです。
public ActionResult Filter(int? id, string firstName, string lastName, bool? isMember) {
var search = new Search {
Id = id,
FirstName = firstName,
LastName = lastName,
Member = isMember
};
var memberViewData = new MemberViewData {
Id = id,
FirstName = firstName,
LastName = lastName,
Member = isMember
};
memberViewData.Results = _dataRepository.GetMember(search);
return View("Search", memberViewData);
}
私は終わっこれを考えていますし、実際にはデータアクセス層に値を渡すと、コントローラでのViewDataを移入、または私は使用することができますはるかにエレガントなパターンや習慣があるでしょうか?
申し訳ありませんこれがダンプのように見える場合、アイデアを飛び越えてフレームワークを掘り下げる時間はありません。タデウシュが述べたと同様
intrestingですが、私が理解しているように、入力フィールドはビューからActionMethodに渡すことができます。 –
ちょうどこれで遊ぶ時間を見つけることができました.Mvcはデフォルトでオブジェクトのプロパティにフォームフィールドをバインドしようとします。 –
はい、そうです。パラメータバインディングよりも細かい制御が必要な場合は、オーバーライドできるデフォルトのモデルバインダーを使用します。 –