2012-03-07 3 views
2

differenet 모델 (엔티티)에서 여러 필드가있는 검색 페이지를 개발할 것입니다. 또한 조회 테이블에서 값을 채울 동일한 화면에 여러 개의 DropDownList이 있습니다.다중 모델 및 조회 테이블이있는 MVC3 검색 화면

나는 (이 시나리오에서) 최선의 접근 방법을 알고 싶습니다. ViewModel을 만들고 해당 모델을 내보기로 전달해야합니까? 아니면 다른 접근 방식이 필요합니까?

하지만 조회 테이블에서 채우는 내 드롭 다운 필드를 어떻게 처리해야하는지 잘 모르겠습니다.

또한 페이지를 제출할 때 다음 검색 세부 정보 화면에서 해당 값을 가져 와서 db의 모든 레코드를 가져와야합니까? 내가

답변

1

필요한 속성 (검색 기준)을 가진 ViewModel을 사용하는 것이 좋습니다. 검색 할 때 HttpGet 작업을 수행하면 조회 테이블의 모든 데이터가로드되고 속성 (예 : 상태 등)으로로드됩니다.

public ActionResult Search() 
    { 
    SearchViewModel objVM=new SearchViewModel(); 
    objVM.States=MyService.GetStates(); 
    objVM.Type=MyService.GetUserTypes();  
    return objVM.  
    } 

    [HttpPost] 
    public ActionResult Search(SearchViewModel objVM) 
    { 
     if(ModelState.IsValid) 
     { 
     //Go for the search and return results 

     } 
     return View(objVm); 
    } 
+0

그래서 필요한 검색 속성 만 사용하여 뷰 모델을 만듭니다. 즉 내 뷰 모델에서 전체 모델 속성을 참조 할 필요가 없음을 의미합니다. –

+0

한 가지 더, 결과를 검색하는 동안, 나는 먼저 외부 DB를 사용하여 일부 키 필드를 검색해야합니다. 그러면 현재 데이터베이스로 전체 필드를 검색합니다. 제 질문은 이미 검색 기준에 사용할 수있는 쿼리가 있습니다. EF에서 해당 쿼리를 사용할 수 있습니까? 이것을 얻기위한 샘플이나 링크가 있습니까? –

+0

@PrasantaBiswal : 예. 검색 양식에서 원하는 필드를 속성으로 사용하십시오. – Shyju

1

EF 4.2 MVC3를 사용하고

은 물론, 가장 좋은 방법은 뷰 모델을 사용하는 것이 분명하다. 이런 식으로 뭔가가 충분 :

public class Model1 
{ 
    public string Prop1 { get; set; } 
} 

public class Model2 
{ 
    public string Prop2 { get; set; } 
} 

public class ViewModel1 
{ 
    public Model1 Model1 { get; set; } 
    public Model2 Model2 { get; set; } 
    public SelectList DropDownItems { get; set; } 
} 

당신은보기에이 뷰 모델을 통과됩니다 컨트롤러의 동작 방법에 SelectListItem 객체의 양으로 SelectList을 채울 것입니다.