2012-01-31 3 views
4

뷰가 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이됩니다. 나는 여기에 근본적인 무언가를 놓치고있다 ... 이 데이터를 동일한 뷰에 표시하려면 어떻게해야합니까?

답변

1

이것이 결국 내가 한 일입니다. 그것은 완전히 깨끗하다고 ​​느끼지는 않지만 최소한의 방법으로 책임을 지켰습니다. 누군가가 더 나은 제안을 귀하의 예제를 게시하시기 바랍니다 있다면 TempData 없이이 일을 더 나은 방법을 갖고 싶습니다.

+0

액션이 객체를 전달할 수 없기 때문에 프리미티브 만 처리 할 수있는 유일한 방법은 컨센서스 인 것처럼 보입니다. 그래서 그것을 표시하는 것은 대답했다. –

+0

두 번째 방법에서 ModelState.IsValid가 false이면 어떻게됩니까? –

+0

ModelState는 포스트에서 첫 번째 방법으로 평가됩니다. 다른 스토리 인 db에 데이터를 저장하는 경우 그게 중요합니다.하지만 이는 단순히 db에서 데이터를 가져 와서 모델의 속성에 할당하고 보내는 것입니다. 다시 –