2009-08-10 4 views
2

원하는 부분 뷰의 경로 목록을 전달한 다음 각 뷰에서 RenderPartial을 호출하여 부분 뷰를 뷰에 동적으로로드하려고합니다. 이것은 트릭을 할 것으로 보인다. 부분 뷰에 모델을 전달하려고하면 문제가 발생합니다. 필자가 동적으로로드하고 있기 때문에 특정 부분 뷰를 전달할 모델을 정확히 알지 못합니다. 나는 가능한 모든 객체를 채우고 싶지 않고 모델을 동적으로로드하기 위해 각 부분 뷰에 대한 구성 룩업을 사용한 리플렉션을 고려하고 있습니다. 나도 나를 위해 적절한 모델 값을 자동으로 채울 ActionFilter를 추가하는 것을 고려하고 있었지만이 구현조차도 Reflection을 사용해야했다. 누구든지 다른 제안이 있습니까?동적 뷰 부분 뷰로드

내가 MVC에서 볼 수없는 일반 ASP.NET 사용자 컨트롤에 대해 놓친 한 가지. 사용자 컨트롤은 데이터 검색을 위해 자체 논리를 캡슐화하고 MVC에서는 주 컨트롤러가이를 알아야합니다. 즉, 다른 컨트롤러에 대한 부분 뷰를 사용하면 해당 컨트롤러는 해당 부분 뷰에 대한 모델을 가져 오는 방법을 알아야합니다. 내가 여기서 뭔가를 놓치고 있니? 감사.

답변

4

당신이 묘사하는 것을 원한다면, Html.RenderAction()에 대해 읽고 싶을 것입니다. 이것은 많은 경우에 유용하지만 "순수한"MVC (아마도 실용적인 MVC)가 아닙니다.

부분 검색을 사용하여 다른 검색 화면 (검색 제출 단추가 동일 함)을로드 할 때 상황이 비슷하지만 양식 필드 만 다릅니다.

다음과 같은 방식으로 처리합니다. 공통 기본 클래스 컨트롤러에는 뷰 모델 객체 (SearchObject는 객체 유형 임)에 전달하는 제네릭 형식 매개 변수가 있습니다.

public abstract class SampleController<T> : Controller where T : new() 
public virtual ActionResult SearchForDocuments() 
     { 
      searchModel.SearchObject = // Create type of T; 
      // Some more code 
      return View("SomeView", searchModel); 
     } 

다음에는 검색 대상을 부분보기로 전달하는 강력한 형식의보기가 있습니다.

부분보기는 강하게 입력되며 강하게 타입의 모델로 무엇을 할 것인지를 안다.

+0

코드를 보았지만 흐름을 이해하지 못했습니다. 그래서 작은 전체 작동 샘플 코드를 게시 할 것입니다. 감사 – Thomas

1

로직이 있고 Partials as string을 리턴하는 도우미 함수를 작성하면 결과가 같을 수 있습니다. RichardOD가 제안한 가상 함수보다 더 많은 이식성을 갖습니다.