2008-08-30 7 views
9

ASP.NET MVC 프로젝트를 시작하고 경험이 전반적으로 좋았지 만 컨트롤러가 엉망인 스파게티에 만족하지는 못했습니다. 나는 온라인 (CodeCampServer, 등등 ...)을 둘러 보았고 컨트롤러 메소드가 SRP (단일 책임 원칙)를 거의 일관되게 위반하는 동일한 문제를 겪고있는 것처럼 보인다. 요청이있을 경우 단순히 뷰를 렌더링하는 컨트롤러 메소드 GET하지만 POST이면 모델을 업데이트합니다. 이제는 컨트롤러 메소드가 애플리케이션 전반에 걸쳐 여러 논리적 라우트를 담당하고 있습니다. 즉, 폼에서 클릭 된 버튼을 확인하고 이에 따라 작동합니다. JavaScript를 사용하여 각 단추를 다른 양식 작업으로 리디렉션 할 수 있지만 뭔가가 올바르게 느껴지지 않습니다 ... 다른 큰 문제는 마법 문자열의 확산입니다 - ViewData [ "foo"] = blah; 간단히 말해서 컨트롤러 로직을 어떻게 구성합니까? 뷰 당 하나의 거대한 모델 객체? 작은 컨트롤러 메소드와 자바 스크립트가 많이 라우터입니까? 내 목표는 유지 보수 가능한 코드입니다. 기능이 쌓여서 미끄러운 경사면 아래로 미끄러지기 시작합니다. ...ASP.NET MVC : 컨트롤러 구성

답변

8

ASP.NET 미리보기 5 (CodePlex에서 사용 가능)에 대한 답변이 있습니다 : [AcceptVerbs] 특성. Phil Haack은 사용 방법을 blog post 있습니다.

뷰 데이터 매직 키 질문은 재미있는 문제입니다. 뷰를 반 (semi) 독립 구성 요소로 간주하면 (특히 부분 뷰 지원을 고려할 때) 견고한 유형의 모델을 만드는 것은 뷰의 여러 부분이 비교적 독립적이어야하므로 덜 이상적입니다. 서로.

0

다른 사람들이이 문제를 어떻게 처리합니까? 나는 모델 폴더의 뒤죽박죽을 검토하는 데 몇 시간을 보냈다. 나는 폴더를 만드는 것이 시각적 인 혼란을 줄이는데 도움이된다는 것을 알아 냈다. 일치하는 네임 스페이스를 사용하면 많은 도움이된다.

하지만 현재 내 컨트롤러는 모노리스입니다. 문제는 내가 프로젝트에서이 시점을 배우는 데 집중 해왔다는 것이다.

MVC에서 좋은 핸들을 얻었으므로 복잡성을 검토하고 컨트롤러를보다 명료하고 깨끗한 기능으로 수정하는 것이 좋습니다.

다른 컨트롤러가 컨트롤러를 깨고 하위 컨트롤러에 있습니까? (그러한 것이 있다면)

+0

컨트롤러를 코딩하는 속임수는 '각 동작 방법이 20 줄 또는 30 줄 또는 비교적 적은 수를 넘는다면 어떻게 줄일 수 있을까요?'라고 말하면됩니다. 기본적으로 DRY 상태를 유지하고 현재 수행중인 작업을 다시 생각해보고 해당 논리를 적절한 SERVICE 계층으로 옮겨 재사용 할 수 있습니다. –

+0

또한 ROB CONERY의 StoreFront MVC Starter Kit를 다운로드하고 자신의 솔루션을 계층화 한 방법을 확인하십시오.> 매우 멋진 awesomesauce. (구글, 나는이 늦은 (early ?!) 아침에 링크를 찾는 것을 귀찮게 할 수 없다. .. hth! –