2012-05-02 2 views
0

하나의 컨트롤러에 여러 가지 동작을 원하지 않기 때문에 모든 컨트롤러를 하나의 컨트롤러에두기보다는 디렉토리의 각 뷰에 대한 컨트롤러 로직을 분리하고 싶습니다. 이것을 달성하기위한 어떤 방법이라도?디렉토리의 각보기마다 다른 컨트롤러가 필요합니까?

Views-- 
    FooFolder 
      Fooview.cshtml 
      Barview.cshtml 


Controllers-- 
    FooController.cs 
    BarController.cs 
+0

호기심에서 벗어난 이유는 무엇입니까? – MilkyWayJoe

+1

부분 클래스를 사용할 수 있습니다. 적어도 논리를 여러 파일로 분리해야합니다. 나는 내 컨트롤러를 슬림하게 유지하여 너무 많은 논리를 가지고이 문제를 해결하지 못한다. –

+0

Barview.cshtml이 BarFolder에 있어야하지 않습니까? 규칙은 각 컨트롤러에 대해 하나의 Views 폴더를 갖는 것입니다. 따라서 컨트롤러와 뷰 폴더를 만들어보세요. – DOK

답변

1

특정 컨트롤러에서 특정 폴더의 견해 나 행동을 할 요구 사항 없다. 이는 단지 관습 일 뿐이며보기 엔진을 바꾸거나 경로 정의를 변경하거나보기 경로를 명시 적으로 지정하여 변경할 수 있습니다. 그러나 컨트롤러 로직을 분리하기를 원한다면, 컨트롤러 자체와 함께 시작하는 것이 아니라 다른 곳의 비즈니스 메소드로 로직을 오프로드하고 컨트롤러에서이를 불러내는 것입니다.

+0

동의. 그리고 만약 당신이 당신의 컨트롤러 동작이 로직으로 끓어 오르는 것을 알게된다면 당신은 [컨트롤러를 식단에 올려 놓는] 비디오 (http://www.viddler.com/v/b568679c) 비디오를 보는 것이 좋습니다. – Dangerous

+0

로직 오프로드가 아닙니다. 처리 할 이벤트의 숫자가 많을 것이고 컨트롤러 당 더 적은 수의 액션 메소드를 유지하는 것이 좋을 것이고 일부는 컨트롤러에 서비스를 주입하고 나머지는 그렇지 않을 수도 있습니다. – Suedeuno

관련 문제