私は、部分的に3つのビューからなるビューを持っています 画面の左右の上部に2つの部分です。 それぞれが相互に排他的な検索を持っており、それぞれが戻って自分の行動に投稿同じビューの部分図を返す
これはこれは、部分図のいずれかのポストアクションがある
public ActionResult Index() {
var model = new SearchOptionsViewModel();
return View(model);
}
初期ビューをレンダリングするアクションは次のとおりです。
[HttpPost]
public ActionResult SearchByUser(UserSearchOptionsViewModel model) {
if(ModelState.IsValid) {
var list = SearchUserService.SearchByValue(model.LastName, model.Username, model.EmailAddress);
if(list != null) {
var resultsModel = new UserSearchResultsListViewModel();
list.ForEach(item => resultsModel.Users.Add(new UserSearchResultsViewModel(item)));
return RedirectToAction("SearchResults", resultsModel);
}
}
return View(model);
}
このモデルは、正常にデータを投稿してデータベースから取得し、それをviewmodelに追加します。 検索条件の下の同じ画面に結果を表示する方法については、私は迷っています。
これは、以前のアクションからモデルを受け取り、その部分を元のビューに戻すために働くことを望んでいたアクションです。私は3番目のSearchResultsのpartialviewを使って答えを出したが、それはうまくいかないと思った。それは同じページ上ではなく、結果を示す自分のページにナビゲートする。
public ActionResult SearchResults(UserSearchResultsListViewModel model) {
return PartialView(model);
}
これを実行すると、モデルは常にnullになります。私はここに何か根本的な欠けている... このデータを同じビューに表示するにはどうすればいいですか?
アクションはオブジェクトを渡すことができないため、プリミティブのみを処理する唯一の方法としてコンセンサスのようです。だからそれに印を付ける。 –
しかし、2番目の方法でModelState.IsValidがfalseの場合はどうなりますか? –
ModelStateはポストから最初のメソッドで評価されます。これは、別のストーリーであるdbにデータを保存していた場合、それは私にとって重要なことですが、これは単純にdbからデータを取得してモデルのプロパティに代入し、それは戻って –