2009-12-22 5 views
1

MVC로 일하는 것에 익숙하지 않으므로 아무 것도 모른다고 가정하지 마십시오.MVC에서 대체 하위 뷰를 어떻게 렌더링합니까?

나는 이미 MVC로 작성된 프로젝트를 선택하고 그것에 몇 가지를 추가하려고하고있다.

하나 개의보기에 나는이 이미지 디렉토리 아래 List.ascx을 볼 줄

<% Html.RenderAction("List", "Image", new { id = Model.JobId, all = true }); %> 

있다. 뷰 컨트롤러에서 List 메서드를 볼 수 있습니다.

그 목록 메서드의 결과를 다른 ascx 파일로 렌더링하고 싶습니다. (AssignImage.ascx) 컨트롤러에 다른 메서드를 추가 할 수 있다는 것을 알았지 만 같은 메서드를 사용하지만 다른 뷰를 사용해야하는 것처럼 보입니다. 액션 방법에

답변

1

당신이 몇 가지 코드를 재사용 (또는 복제) 괜찮다면 난 아마이 처리 할 수있는 새로운 조치를 할 것입니다.

다른 매개 변수를 전달하는 동작을 변경하지 않을 것이라고 생각합니다 (동작은 이미 2를 취하고 있습니다 : jobId 및 부울). 세 번째 매개 변수를 설명하기 위해 어딘가에서 기존 코드를 변경해야 할 것입니다.

동작이 단지 레코드 목록을 제공한다고 가정하면 한 줄의 LINQ로 새로운 동작을 추가하는 방법 (또는 데이터를 가져 오는 중)이 DRY의 불쾌감을 줄 수 있습니다 ... 특히 한 번의 작업으로 너무 많은 기능을 혼합하지 않아도 코드를 유지하기 쉽습니다. 너무 공격적이라면, 몇 가지 일반적인 방법을 호출하는 작업을 리팩터링 할 수 있습니다.

2

if (isList) return PartialView("List"); else return PartialView("AssignImage");

+0

그래서 Action 메소드가보기를 결정합니까? 컨트롤러에서 어떻게 든 데이터를 요청하고 뷰에서 레이아웃을 결정하게 할 수 있어야합니다. 어쩌면 역방향/전통적인 asp.net 방식으로 생각할 수도 있습니다. –

+1

예, 작업에 따라보기가 결정됩니다. 뷰는 MVC 패턴에 따르면 매우 어리 석고 그와 같은 결정을 내리지 않아야합니다. –

관련 문제