뷰가 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);
}
이 모델은 성공적으로 데이터베이스에서 데이터를 게시하고 가져 와서 뷰 모델에 추가합니다. 검색 기준 아래의 동일한 화면에 결과를 표시하는 방법에 관해서 분실했습니다.
이것은 이전 작업에서 모델을 수신하고 부분 뷰를 원래보기로 되돌리기 위해 작업하기를 바라고 있었던 작업입니다. 제 3 회 SearchResults 부분보기를 사용하는 것이 대답이라고 생각했지만 작동하지 않습니다. 동일한 페이지에서 대신 결과를 보여주는 자체 페이지로 이동합니다.
public ActionResult SearchResults(UserSearchResultsListViewModel model) {
return PartialView(model);
}
이렇게하면 모델이 항상 null이됩니다. 나는 여기에 근본적인 무언가를 놓치고있다 ... 이 데이터를 동일한 뷰에 표시하려면 어떻게해야합니까?
액션이 객체를 전달할 수 없기 때문에 프리미티브 만 처리 할 수있는 유일한 방법은 컨센서스 인 것처럼 보입니다. 그래서 그것을 표시하는 것은 대답했다. –
두 번째 방법에서 ModelState.IsValid가 false이면 어떻게됩니까? –
ModelState는 포스트에서 첫 번째 방법으로 평가됩니다. 다른 스토리 인 db에 데이터를 저장하는 경우 그게 중요합니다.하지만 이는 단순히 db에서 데이터를 가져 와서 모델의 속성에 할당하고 보내는 것입니다. 다시 –